eAccelerator

acceleratorOgni volta che una pagina scritta in php viene richiesta, il codice contenuto in essa viene passato ad un motore per essere trasformato in pagina html quindi questa viene inviata al utente. Sfortunatamente il motore impiega parecchio tempo e cicli cpu ad elaborare la pagina.

E’ possibile evitare che ad ogni richiesta della pagina da parte di più visitatori, essa venga trattata dal motore. Sono nati dei programmi chiamati op-cache o acceleratori che permettono di salvare la pagina dopo il passaggio nel motore e ad ogni successiva richiesta essa non verrà più buttata nell’engine ma sarà memorizzata o in RAM o su disco.

Una pagina in memoria viene inviata prima all’utente e più richieste possono essere soddisfatte nel tempo in cui solo una pagina viene elaborata dal motore php.

eaccelerator

eAccelerator è una delle migliori soluzioni per il caching delle pagine php, è aggiornato più frequentemente rispetto ad altri software ed è compatibile con le ultime versioni di PHP 5.

Installazione di eaccelerator

Purtroppo eaccelerator non è disponibile in un pacchetto ma bisogna compilare i sorgenti.

Prima di tutto si devono installare alcuni strumenti e programmi necessari alla compilazione di eaccelerator, usando Debian si può usare il comando:

# apt-get install php5-dev build-essential

Scaricare l’archivio del software da internet reperibile su http://www.eaccelerator.net/ oppure:

# wget http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2

Scompattare il file bz2:

# tar xvfj eaccelerator-0.9.5.3.tar.bz2

Entrare nella cartella appena creata:

# cd eaccelerator-0.9.5.3

L’eseguibile phpize fa parte degli strumenti offerti dal pacchetto di sviluppo di php, per cui è essenziale aver installato php5-dev (per Fedora il pacchetto si chiama php-devel).

#  /usr/bin/phpize

# ./configure

# make

# make install

Creare una cartella dove saranno memorizzate le pagine elaborate dal programma.

# mkdir /var/cache/eaccelerator

Fare in modo che sia accessibile liberamente a tutti:

# chmod 0777 /var/cache/eaccelerator

Questa è la configurazione di eaccelerator come estensione di php, creare un file nella cartella /etc/php5/conf.d/ di nome eaccelerator.ini:

# nano /etc/php5/conf.d/eaccelerator.ini

All’interno del file eaccelerator.ini inserire il testo seguente:

extension=”eaccelerator.so”
eaccelerator.shm_size=”16″
eaccelerator.cache_dir=”/var/cache/eaccelerator”
eaccelerator.enable=”1″
eaccelerator.optimizer=”1″
eaccelerator.check_mtime=”1″
eaccelerator.debug=”0″
eaccelerator.filter=””
eaccelerator.shm_max=”0″
eaccelerator.shm_ttl=”0″
eaccelerator.shm_prune_period=”0″
eaccelerator.shm_only=”0″
eaccelerator.compress=”1″
eaccelerator.compress_level=”9″

Per salvare premere CTRL + O e per uscire dall’editor nano usare CTRL + X.

Nella cartella /var/cache/eaccelerator si troverà la cache prodotta dal software, in alternativa è possibile memorizzare la cache in una cartella che si cancella ogni volta che il sistema operativo si riavvia. in questo caso sostituire /var/cache/eaccelerator con /tmp/eaccelerator (ovviamente è necessario creare la directory e assegnarle i permessi corretti).

Vediamo in particolare le impostazioni di eAccelerator.

Impostazioni di eAccelerator

eaccelerator.shm_size è il parametro che indica quanta memoria condivisa viene adoperata da eAccelerator per memorizzare la cache php. Il numero è in megabyte quindi eaccelerator.shm_size = “16” significa attribuire 16 megabyte.

Eseguendo il comando:

echo value > /proc/sys/kernel/shmmax

Il numero restituito rappresenta la dimensione massima di memoria che un processo può allocare. Dividendolo per 1024 fissa il massimo valore per eaccelerator.shm_size. Ovvero eaccelerator.shm_size non deve mai superare (value di shmmax)/1024.

eaccelerator.cache_dir è la cartella dove eAccelerator salva la cache del codice php.

eaccelerator.enable se ha valore 1 allora eAccelerator è in funzione mentre se è a 0 (zero), il programma è disattivato. Questa funzione è molto utile perché consente di disabilitare temporaneamente la cache magari mentre si testano le performance del codice php appena sviluppato.

eaccelerator.optimizer funziona similmente a eaccelerator.enable; se impostato a 1, eAccelerator ottimizza le pagine mentre a zero l’esecuzione del codice php risulta lenta (come se non fosse in funzione il software).

eaccelerator.debug se attiva crea messaggi informativi nel file di log per il debugging.

eaccelerator.log_file qualora si voglia fare debugging è opportuno indicare dove memorizzare i log generati dal programma. eaccelerator.log_file = “/var/log/apache2/eaccelerator_log” memorizza un file testuale nella directory dei log usata anche da Apache.

eaccelerator.check_mtime assegnando 1 al parametro, eAccelerator controlla che la cache sia aggiornata, se è stata fatta una modifica ad una pagina questa deve essere ricompilata e memorizzata nuovamente. Disabilitando quest’opzione se una pagina già in cache viene modificata è necessario cancellare manualmente la cache per vedere la nuova versione della pagina. Ovviamente è consigliata l’attivazione.

eaccelerator.filter specifica quali file vengono memorizzati nella cache. Per esempio indicando eaccelerator.filter=”*.php”, solo i file con estensione .php saranno trattati dal programma. Con eaccelerator.filter=”!/home*”, eAccelerator non gestisce i file il cui nome contenga la stringa /home seguita da qualsiasi carattere; attenzione però perché un eventuale file /home/utente/script.php non viene processato da eAccelerator in quanto /home compare nel suo nome. Il punto esclamativo indica la non inclusione.

eaccelerator.shm_max indica il numero massimo in byte usati dalla memoria condivisa. Non c’è un limite come c’è per eaccelerator.shm_size. Per limitare la dimensione massima della memoria condivisa a 1 megabyte si può impostare eaccelerator.shm_max=”1M”, anche se è preferibile mettere zero per non restringere la cache. Non ha nulla a che vedere con la massima dimensione di una pagina singola memorizzata.

eaccelerator.shm_ttl quando non c’è più memoria a disposizione di eaccelerator.shm_only le pagine più vecchie, che sono state richieste da prima del valore messo in eaccelerator.shm_ttl, sono cancellate. Mettendo zero le pagine non sono cancellate. Settando eaccelerator.shm_ttl=”600″ il tempo è di 10 minuti (60 sec x 10).

eaccelerator.shm_prune_period simile a eaccelerator.shm_ttl, solo che vengono eliminate le pagine più vecchie.

eaccelerator.shm_only abilita o disabilita la memorizzazione sul disco rigido delle pagine elaborate da eAccelerator. Mettendo eaccelerator.shm_only=”0″ eAccelerator salva le pagine anche sul disco e non solo in memoria. E’ preferibile indicare zero.

eaccelerator.compress attiva la compressione delle pagine per risparmiare memoria. eaccelerator.compress=”0″ lascia le pagine non compresse.

eaccelerator.compress_level indica quanto comprimere le pagine elaborate. Nove è il massimo fattore di compressione.

2 pensieri riguardo “eAccelerator

  1. Federico ha detto:

    Scusa ma non ho capito bene, posso installarlo solo sul server locale questo programma?

  2. valent ha detto:

    No, puoi installarlo anche su un server produttivo avendo cura di rimuovere tutti i compilatori e gli strumenti di sviluppo installati (cioè tutto quello che è stato installato da build-essential).

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *