Rust in PHP

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Full Stack Developer Industriële Automatiseri

Raster levert slimme industriële automatiseringsoplossingen aan nationale en internationale opdrachtgevers voor wie procesveiligheid van groot belang is. We zijn sterk in spraakmakende one-off projecten in de productie- en procesautomatisering waarbij extreme engineering een terugkerend thema is. Daarbij kun je denken aan: Het veilig en duurzaam ontwerpen, plaatsen én weer opruimen van olie- en gas- productieplatformen De transformatie van de olie- en gasmarkt naar windenergie op zee Het oplossen van lokale parkeerproblematiek in dichtbevolkte steden Het cyber secure maken van kritische industriële productieomgevingen Het op afstand veilig produceren door onbemande platformen op de Noordzee Het succesvol lanceren van satellieten in de

Bekijk vacature »

Ad Fundum

Ad Fundum

03/08/2021 08:12:44
Quote Anchor link
Ik zit al een tijdje met het probleem dat ik een programma heb geschreven in PHP, dat ik alleen als SaaS kan aanbieden. Want klanten zijn in principe niet te vertrouwen wanneer ik het programma zou overdragen voor On Premise hosting.
Gezien dat PHP code niet te compileren is (ja, versie 5 met Zend Guard, maar daar heb ik weinig aan) was mijn eerste idee om het programma dan maar zelf om te schrijven naar C. Dat zou moeten kunnen omdat PHP zelf in C geschreven is en extensies vaak wrappers zijn van C libraries. Nadat ik mijzelf opnieuw verdiept heb in C (ik heb daar eerder al mee gewerkt), ben ik afgelopen week van spoor gewisseld.

Ik heb het handboek van Rust gelezen. Ik had al eerder naar Rust gekeken maar vond toen het gebrek aan kwalitatieve crates een issue. Maar als ik dat nu afzet tegen alle voordelen ten opzichte van C, wint Rust. En het smaakt naar meer. Maar de applicatie is vooralsnog in PHP. Voor een geleidelijke transitie zin ik op deze vraag:
Welke manieren zijn te bedenken om Rust en PHP te laten samenwerken?

Een optie die ik gevonden heb is om met Rust een library te maken die met FFI te gebruiken is:
https://platform.sh/blog/2020/php-fun-with-ffi-getting-rust-ic/
De conclusie van het artikel is dat het weinig triviaal is en dat het weinig voordeel zou bieden.

Een ander idee is om naar wasm te compileren en de client code te laten samenwerken met PHP. Dat is leuk voor later, maar in de kern gaat het om de code aan de achterkant, die op de server draait, waar de relevante logica zit.

Misschien zijn er nog meer mogelijkheden?
Gewijzigd op 03/08/2021 08:14:23 door Ad Fundum
 
PHP hulp

PHP hulp

08/12/2021 16:53:30
 
Ward van der Put
Moderator

Ward van der Put

03/08/2021 11:50:51
Quote Anchor link
Er zijn inderdaad meer alternatieven, dichter bij huis:

https://pecl.php.net/package/bcompiler
 
Ad Fundum

Ad Fundum

03/08/2021 14:17:32
Quote Anchor link
Bedankt Ward voor het meedenken.
Toch denk ik niet dat het een serieus alternatief is, omdat de laatste versie 10 jaar oud is en alleen PHP 5 ondersteunt net als Zend Guard. Ik heb eerder op dit forum andere mogelijkheden onderzocht voor PHP en kwam uit op een tools als ionCube. Maar ik ben niet overdreven blij met de richting waarin PHP drijft met versie 8. Omdat ik al lang (20 jaar) met PHP werk sta ik open voor een nieuwe taal als Rust.

Hoewel het gras bij een ander altijd groener is, en aangezien Rust alle voordelen van C heeft en veiliger is, en compileert naar WebAssembly, is het toekomstbestendiger en kan ik op termijn met 1 taal zowel PHP als JavaScript vervangen. (Ik heb ook nooit echt warme gevoelens gehad voor JavaScript)

Vanuit Rust heb ik meerdere manieren gevonden om te integreren met PHP, zoals php-rs om een eigen extensie te maken. Of via fastcgi of met een eigen webserver als hyper. Non-blocking I/O is ook geen probleem met tokio. (PHP heeft daarvoor amphp.)

Ik geloof dat ik hiermee mijn eigen vraag heb beantwoord... maar als iemand nog iets kan toevoegen: graag!
Gewijzigd op 03/08/2021 14:19:00 door Ad Fundum
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.