Compilare PHP in codice nativo
Il linguaggio PHP non è solo uno script per generare pagine web in modo dinamico, ma se si è già capitato in passato, è un ottimo strumento per creare programmi da eseguire al di fuori dell’ambiente web/apache.
Infatti è possibile creare velocemente anche programmi eseguibili in linea di comando.
Non si tratta di programmi stand-alone, ma piuttosto script che vanno lanciati tramite php (la versione CGI).
Tutte le potenzialità web del linguaggio sono sfruttabili anche per creare propri programmi. E’ facilissimo recuperare un file dal web da cui estrarre alcune informazioni. (in altri linguaggi sarebbe più complicato)
Tutto questo è possibile solo se è già installato PHP sul computer che viene lanciato lo script. (per esempio installando WAMP server)
Infatti il codice PHP, per essere eseguito, viene interpretato dalle librerie PHP (CGI).
E’ possibile anche compilare in nativo gli script PHP.
Significa che funzioneranno sul computer senza richiedere prima un’installazione del supporto PHP.
Per ottenere questo risultato è necessario compilare gli script con alcuni software.
Esistono diverse possibilità, ma in realtà solo 2 soluzioni permettono di ottenere dei risultati decenti. (più una terza alternativa)
I due software sono:
- PHC compiler
- HipHop
PHC compiler
è un ottimo compilatore opensource nato diversi anni fa.
Permette di creare estensioni, da usare con PHP stesso, oppure eseguibili stand-alone.
Molto comodo da usare perché basta scaricare la versione che si vuole dal sito di riferimento.
HipHop
è un compilare a tutti gli effetti, e genera un codice nativo che funziona stand-alone.
Le sue potenzialità sono molto interessanti, infatti può generare eseguibili che funzionano come webserver multithread.
Il progetto è supportato da Facebook che ne sfrutta a pieno i benefici, la maggior parte della pagine PHP del portale sono state compilate con questo sistema.
I vantaggi maggiori sono la velocità di esecuzione, ma soprattutto un minor utilizzo delle risorse del server. (rispetto ad una soluzione PHP classica)
In realtà non avviene una vera compilazione diretta da PHP, ma il codice viene trasformato in codice C++, in modo da poter utilizzare il potente compilatore G++ per creare gli eseguibili.
Questa soluzione offre molti vantaggi (le ottimizzazioni del compilatore C++), ma anche degli svantaggi.
Perché non è possibile implementare in C++ tutti i costrutti previsti in PHP.
Una delle funzioni non utilizzabili è “eval”. (e non è una grave perdita)
Così non è garantito che ogni script PHP possa venir compilato con HipHop.
Questo compilatore soffre anche di uno svantaggio. Prima di usarlo bisogna compilarlo, e non è una cosa semplice da fare.
Inoltre le piattaforme supportante sono solo:
Centos 64bit (ufficiale) e Ubuntu 9 64bit (sperimentale)
http://wiki.github.com/facebook/hiphop-php/
PHC-Win
Esiste un terzo compilatore, da non confondere con PHC compiler,il suo funzionamento è abbastanza semplice.
Il compilatore esegue una precompilazione degli script PHP in metalinguaggio. L’esecuzione vera e propria avviene utilizzando le librerie PHP che vanno sempre distribuite insieme all’eseguibile.
Infatti non è un vero e proprio compilatore, ma è comodo da usare ed i risultati sono molto apprezzabili.
Inoltre, per via del suo funzionamento ibrido, supporta completamente i costrutti di PHP e la maggior parte delle estensioni.
Questo compilatore supporta PHP 5.3.x.
Le prestazioni, rispetto ad uno script non compilato, migliorano di circa il 33%.
http://www.swiftlytilting.com/category/downloads/phc-win/
PHP Benchmark
Su PHP Classes è presente un ottimo articolo che mette a confronto i primi due compilatori.
I risultati dei benchmark posso essere indicativi, ma in molti casi le prestazioni di una pagina PHP sono influenzante anche da altri fattori: velocità disco, numero connessioni contemporanee.
http://www.phpclasses.org/blog/post/117-PHP-compiler-performance.html
Scritto da InuYaksa il February 28th, 2010 in Uncategorized.
Commenti: nessuno




Write a comment