Domanda

Qualcuno ha esperienza di lavoro con acceleratori PHP come MMCache O Zend Acceleratore?Mi piacerebbe sapere se l'utilizzo di uno di questi rende PHP paragonabile a Più veloce tecnologie web.Inoltre, ci sono dei compromessi per l'utilizzo di questi?

È stato utile?

Soluzione

Tieni presente che Zend Optimizer e MMCache (o applicazioni simili) sono cose totalmente diverse.Mentre Zend Optimizer tenta di ottimizzare il codice operativo del programma, MMCache memorizzerà nella cache gli script in memoria e riutilizzerà il codice precompilato.

Ho fatto alcuni benchmark qualche tempo fa e puoi trovare il file risultati nel mio blog (in tedesco però).I risultati fondamentali:

Zend Optimizer da solo non ha aiutato affatto.In realtà i miei script erano più lenti che senza l'ottimizzatore.

Quando si tratta di cache:*più veloce: eAcceleratore * XCache * APC

E:Vuoi installare una cache del codice operativo!

Per esempio:testo alternativo http://blogs.interdose.com/dominik/wp-content/uploads/2008/04/opcode_wordpress.png

Questa è la durata necessaria per chiamare la home page di WordPress 10.000 volte.

Modificare: A proposito, eAccelerator contiene un ottimizzatore stesso.

Altri suggerimenti

MMCache è stato deprecato.Lo consiglio entrambi http://pecl.php.net/package/APC O http://xcache.lighttpd.net/, che offrono entrambi anche spazio di archiviazione variabile (come Memcache).

Entrambi sono interessanti e forniranno un aumento di velocità poiché compilano il codice sorgente in una rappresentazione binaria che viene poi eseguita dal motore PHP.

Qualsiasi sito Web di grandi dimensioni in esecuzione con PHP (Facebook per esempio) esegue una sorta di sistema di cache del codice operativo come MMCache.

Il problema è che non sono molto facili da configurare a seconda del sistema.

A seconda di quanto codice PHP viene effettivamente eseguito e di quanto tempo impiega l'esecuzione, può essere davvero una grande vittoria.Certamente non farà male, ma il guadagno che vedrai dipenderà molto da dove trascorri il tuo tempo attualmente.

tra l'altro mmcache è stato inserito in un progetto diverso ora, ho dimenticato il nome ma Google te lo dirà.

Utilizzo APC sui miei server di produzione e funziona abbastanza bene fin da subito.Compilalo e aggiungilo a PHP e non ci sono molte modifiche da fare.Lo controllo di tanto in tanto solo per rivedere le statistiche, ma poiché utilizzo molto MVC, tutti i file principali (router, controller, ecc.) cambiano raramente quotidianamente in modo che il codice rimanga compilato e funzioni in modo abbastanza efficiente .

attualmente utilizziamo apc, gratuito ed era solo un semplice plug and play sui nostri server live.Fornito un enorme aumento delle prestazioni per il nostro sito, soprattutto con l'aumento delle dimensioni del progetto.Ho anche disabilitato apc.stat in modo che non controlli se il codice è stato aggiornato, quindi ogni volta che dobbiamo aggiornare il codice sul sito live riavviamo apache.

Utilizzo APC e posso attestare che può ridurre drasticamente il carico della CPU e dell'I/O su un server delle applicazioni se si mantiene un tasso di utilizzo della cache elevato.Non solo ti evita di dover compilare, ma può anche evitarti di dover leggere i file php dal disco.(cioè.i bytecode vengono serviti direttamente dalla memoria principale, quindi è super veloce) Riduce la velocità di rendering di una singola pagina e aumenta le richieste al secondo che il tuo server può gestire.

Se usi RedHat o CentOS, installare APC è semplicissimo:

yum install php-devel httpd-devel php-pear
pecl install apc 
echo "extension=apc.so" > /etc/php.d/apc.ini
# if you're using SELinux:
chcon "system_u:object_r:textrel_shlib_t" /usr/lib/php/modules/apc.so
/etc/init.d/httpd restart

Hai chiesto degli aspetti negativi.L'unico inconveniente è che richiede un po' di memoria.Il valore predefinito su APC è 30 MB, ma può essere modificato e il costo di un po' di memoria si ripaga da solo con l'aumento della velocità e del tasso di risposta.

I test di BlaM hanno incluso tutte le chiamate DB effettuate da WordPress.Quando effettui meno chiamate DB, vedrai che il miglioramento delle prestazioni delle cache del codice operativo sarà ancora più drammatico.

Ho usato Zend Accelerator qualche tempo fa (2004 circa).Sicuramente ha dato alcuni vantaggi significativi in ​​termini di prestazioni sul codice con cui poteva funzionare, ma sfortunatamente il sistema che stavo usando era progettato abbastanza spesso per caricare dinamicamente il codice e quindi valutarlo, cosa con cui Zend Accelerator non poteva fare molto in quel momento (e io immagino che ancora non sia possibile).

L'aspetto negativo è che abbiamo sicuramente riscontrato alcuni problemi di memorizzazione nella cache (dove il codice veniva modificato, ma la versione compilata si sincronizzava con la modifica per un motivo o per l'altro).Immagino che ormai questi problemi siano stati probabilmente risolti.

Ad ogni modo, non ho numeri di confronto concreti e certamente non ho scritto lo stesso sistema in ambienti diversi per confronto, ma per la stragrande maggioranza dei sistemi PHP non ti ucciderà in termini di prestazioni.

Hai dato un'occhiata a Phalanger?Compila codice PHP in .NET.Ecco alcuni parametri di riferimento che dimostrano che può migliorare notevolmente le prestazioni.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top