Come accelerare PHP con xCache

Almeno un 40% dei siti web nel mondo sono scritti in PHP, il linguaggio dinamico più usato e soprattutto gratuito. Cercando nuove tecniche per velocizzare Skimbu, ho scoperto gli acceleratori PHP. Solitamente, così come fanno tutti i linguaggi dinamici, PHP interpreta ed elabora ogni richiesta che gli viene fatta, e questa operazione è quella che rende lenti tutti i linguaggi dinamici. Gli acceleratori PHP velocizzano questa operazione, eseguendo la cache di tutte le richieste PHP. In parole povere, è come avere già la pizza pronta e calda in pochi secondi invece che fare la pasta, aggiungere il pomodoro, mozzarella, metterla in forno e aspettare…

In questo articolo scopriremo gli acceleratori (con qualche collegamento a WordPress) e vedremo in particolare xCache, l’acceleratore più stabile e recente.

Tutto quello che c’è da sapere sugli acceleratori
Direi di essere già stato abbastanza chiaro nelle prime righe dell’articolo: gli acceleratori velocizzano le pagine PHP. Se il caricamento di una pagina dura 10 secondi, siate sicuri che con l’acceleratore durerà almeno 5-6 secondi (o anche 1 secondo). Fondamentalmente gli acceleratori sono delle estensioni PHP, che vanno configurate mediante il file di configurazione php.ini, e solitamente dispongono anche di un pannello di controllo per vedere le statistiche della cache. Gli acceleratori più popolari sono (una lista completa la trovi qui)
eAccelerator (sicuramente il più usato, ma spesso criticato per i suoi bugs e la sua complessità)
xCache (il più stabile e recente, a differenza di tutti gli altri)
Alternative PHP Cache (non l’ho provato, quindi non saprei darvi un giudizio, ma il mio consiglio è di preferire i primi due)
Un’altro acceleratore molto popolare in Windows è Windows Cache Extension. Te lo consiglio solo se hai un sito web non basato su WordPress, in quanto altrimenti sono meglio i primi due acceleratori (per una serie di motivi che non sto qui a spiegare).

xCache
Dopo aver provato sia Windows Cache Extension e eAccelerator alla fine ho optato per xCache, in quanto:
È il più stabile degli acceleratori, perché ad esempio supporta anche le nuove versioni PHP (mentre per gli altri acceleratori vige la regola che bisogna aspettare una nuova versione dell’acceleratore per renderlo compatibile con una nuova versione PHP).
È il più recente
È pienamente compatibile sia con Linux e con Windows, mentre con eAccelerator ad esempio ho avuto dei problemi su Windows
Ha un pannello di controllo avanzato
È il migliore compatibile con WordPress (dai un’occhiata a questa pagina per un plugin che integri xCache e WordPress, altrimenti scaricate W3 Total Cache, un avanzato plugin di caching che aggiunge la compatibilità con xCache)
È forse il più facile e veloce da configurare
Come installare xCache su Windows
Un problema degli acceleratori è che non è mai semplice installarli e configurarli. Purtroppo noi siamo su Windows ed ti spiegherò come installarlo su Windows, se però sei su Linux o Mac OS il procedimento è totalmente diverso, è presente comunque un pagina che ti spiega tutto. Mentre per l’installazione su Windows è presente un’altra pagina.

La prima cosa da fare, è andare nella home di xCache e sotto la sezione News cliccare sull’ultima versione rilasciata , quindi sotto la sezione Downloads, cliccare sul link nel terzo punto “Release directory“. Ti apparirà una pagina piena di links. Qui viene il brutto, infatti devi sapere la tua versione PHP e se si tratta di una thread safe o non thread safe. In Windows la versione PHP più frequente è la non thread safe. Poi devi sapere se la tua versione PHP è VC9 o VC6, anche qui se hai una versione PHP superiore alla 5.3.0 allora hai sicuramente la VC9.
Una volta scaricato, avrai una cartella dentro la quale troverai tantissimi file, ma solo una cartella e un file ti interessano: la cartella admin e il file php_xcache.dll . La cartella admin la dovrai copiare dove vuoi in una parte pubblica del tuo sito web, infatti quella cartella è il pannello di controllo di xCache.

php_xcache.dll è l’estensione PHP, quindi dovrai cercare la cartella di PHP del tuo server, all’interno di essa troverai la cartella ext dove dovrai incollare l’estensione php_xcache.dll. Quindi torna nella cartella di PHP, apri il file php.ini (file di configurazione di PHP) e aggiungi in fondo questo codice

[xcache-common]

extension = php_xcache.dll

 

[xcache.admin]

xcache.admin.enable_auth = On

xcache.admin.user = “utente”

; xcache.admin.pass = md5($your_password)

xcache.admin.pass = “passwordmd5”

 

 

[xcache]

; ini only settings, all the values here is default unless explained

 

; select low level shm/allocator scheme implemenation

xcache.shm_scheme = “mmap”

; to disable: xcache.size=0

; to enable : xcache.size=64M etc (any size > 0) and your system mmap allows

xcache.size = 60M

; set to cpu count (cat /proc/cpuinfo |grep -c processor)

xcache.count = 12

; just a hash hints, you can always store count(items) > slots

xcache.slots = 8K

; ttl of the cache item, 0=forever

xcache.ttl = 0

; interval of gc scanning expired items, 0=no scan, other values is in seconds

xcache.gc_interval = 0

 

; same as aboves but for variable cache

xcache.var_size = 4M

xcache.var_count = 1

xcache.var_slots = 8K

; default ttl

xcache.var_ttl = 0

xcache.var_maxttl = 0

xcache.var_gc_interval = 300

 

xcache.test = Off

; N/A for /dev/zero

xcache.readonly_protection = Off

; for *nix, xcache.mmap_path is a file path, not directory.

; Use something like “/tmp/xcache” if you want to turn on ReadonlyProtection

; 2 group of php won’t share the same /tmp/xcache

; for win32, xcache.mmap_path=anonymous map name, not file path

xcache.mmap_path = “/dev/zero”

 

 

; leave it blank(disabled) or “/tmp/phpcore/”

; make sure it’s writable by php (without checking open_basedir)

xcache.coredump_directory = “”

 

; per request settings

xcache.cacher = On

xcache.stat = On

xcache.optimizer = On

 

[xcache.coverager]

; per request settings

; enable coverage data collecting for xcache.coveragedump_directory and xcache_coverager_start/stop/get/clean() functions (will hurt executing performance)

xcache.coverager = Off

 

; ini only settings

; make sure it’s readable (care open_basedir) by coverage viewer script

; requires xcache.coverager=On

xcache.coveragedump_directory = “”

Ci sono varie modifiche che dovrai fare al codice qui sopra.
modifica xcache.admin.user e xcache.admin.pass , quest’ultima la devi mettere sottoforma di MD5 (un sistema di criptaggio), per generare un texto MD5, usa uno dei tanti tool sul web.
modifica xcache.count con il numero dei processori del tuo server
puoi fare altre modifiche a seconda dei bisogni e delle caratteristiche del tuo server, per una referenza della impostazioni, visita questa pagina
Finalmente hai completato l’installazione dell’acceleratore, salvo qualche errore banale, dovrebbe funzionare tutto. Se hai dei problemi o delle domande cercherò di risponderti nei commenti 😉

Devo dire che questa è forse la guida più personalizzata che abbia mai scritto, d’altronde, quante persone troveranno seriamente utile una guida per installare l’acceleratore PHP xCache su Windows?! Spero comunque che tornerà utile ad almeno una persona