L'impiego di un linguaggio interpretato per raggiungere scopi quali la realizzazione di applicazioni Web è spesso più conveniente in termini di tempo rispetto ad altre soluzioni più
performanti, ma certamente di più complessa realizzazione. Tuttavia, questo non vuol dire che non bisogna sforzarsi di ottimizzare gli strumenti a propria disposizione per ottenere il massimo anche da un linguaggio di scripting come il
PHP.
Sebbene infatti le prestazioni di quest'ultimo siano spesso abbastanza soddisfacenti, le soluzioni per diminuire i tempi di esecuzione sono diverse. Abbiamo già parlato di acceleratori per il linguaggio
PHP, ossia meccanismi di caching del codice macchina generato.
A quelli citati nel mio
precedente articolo vorrei aggiungerne alcuni altri, come
ionCube e
Zend Guard, conosciuto come
Zend Encoder. Anche se molto efficiente, quella degli acceleratori non è la sola soluzione per aumentare le prestazioni dei propri script. Per citare un'altra tecnica simile, è possibile ridurre i tempi di esecuzione utilizzando un sistema di
templates capace di mantenere in una cache gli elementi statici di una pagina Web, in maniera da evitare di ricrearli per ogni singola chiamata. Come esempio, potete dare uno sguardo a
Smarty,
Savant e
HTML_Template_IT ottenibile dal sito
PEAR.
Una soluzione un po' più strutturata potrebbe essere l'uso di un sistema di caching distribuito, come ad esempio
memcached, disponibile anche per altri linguaggi. Utilizzando un sistema del genere, è possibile mettere in una cache distribuita fra più macchine gran parte del contenuto del proprio database, migliorando le performance degli script che vi accedono.
Infine, la compressione dell'output dei propri script può migliorare i tempi di risposta, in quanto utilizzando
gzip per comprimere i dati in uscita è possibile ridurne il volume di quasi l'80%, anche se questo sprecherà qualche ciclo di CPU sia sui server che sui client.
zlib.output_compression = on
zlib.output_compression_level = (livello da 1 a 9)
Per il resto, potrebbe essere utile anche avvalersi di trucchetti, come impostare anche alcune variabili di configurazione di
PHP che possono influire sulle prestazioni, la disattivazione del logging degli errori o l'uso di indirizzi IP per accedere al proprio database. Vi invito quindi a leggere il
post da cui prende spunto questa segnalazione e a considerare comunque che un risultato importante può essere ottenuto semplicemente ottimizzando il proprio codice ed evitando query superflue. A tale proposito, si faccia riferimento anche ad un
articolo apparso su
Zend.com, che si occupa appunto dell'ottimizzazione dei propri script.