risposta-alla-domanda-sullo-sviluppo-web-bd.com

Quale cache PHP (opcode) si dovrebbe usare e perché?

Continuo a sentir parlare di alcune cache PHP (opcode) come - APC, XCache, Memcache, eAccelerator, ecc.

Ma non sono mai riuscito a capire come scegliere uno. Oltre ai vantaggi in termini di prestazioni, che un sistema di memorizzazione nella cache dovrebbe offrire, quali altri fattori dovrebbero essere fonte di preoccupazione.

Ad esempio, perché dirai che il sistema X cache è migliore di Y? Sono meno preoccupato per il guadagno relativo delle prestazioni. Le piccole differenze tra due sistemi qualsiasi contano meno.

Se una risposta generica alla mia domanda non è possibile, ecco alcuni suggerimenti. Uso un VPS dedicato con Mediatemple (con accesso root). RAM è 512 MB (fisico) + 400 MB (scambio) Sono preoccupato per WordPress e i suoi cugini WordPress-MU e BuddyPress. 90% dei nostri codici/i siti rientrano in WordPress famiglia.

Grazie in anticipo per l'aiuto.

44
rahul286

I prodotti che elenchi hanno scopi diversi.

cache OPCode

Ci sono molti PHP acceleratori (OPCaches) come si vede in questo elenco Wikipedia . Come è comune con i prodotti open source, sono tutti abbastanza simili. XCache è il lighttp = PHP ed è la scelta predefinita quando si esegue HTTPd. Funziona bene anche con Apache, tuttavia APC sembra essere leggermente più "gioca bene con gli altri" socialmente parlando, essendo ufficialmente supportato come parte di PHP, ed è rilasciato al passo con la distribuzione ufficiale PHP.

Ho abbandonato usign eAccelerator a causa del suo rallentamento dello sviluppo e in ritardo rispetto alle versioni di PHP, e lo stato benedetto ufficiale offerto da APC con prestazioni simili.

Questi prodotti in genere vengono inseriti; nessun cambio di codice potenziamento istantaneo delle prestazioni. Con basi di codice di grandi dimensioni (Drupal, Wordpress) le prestazioni possono arrivare a volte meglio riducendo al contempo i tempi di risposta e l'utilizzo della memoria.

Memorizzazione nella cache dei dati

Memcache è un prodotto leggermente diverso - potresti considerarlo un sistema di valori chiave leggero che può essere ridimensionato su più server . Il software deve essere migliorato per supportare Memcache e risolve alcuni problemi meglio di altri. Se sul tuo sito Web fosse presente un elenco di valori azionari in tempo reale, è possibile utilizzare Memcache per conservare un elenco residente del valore corrente visualizzato sul sito Web. È possibile utilizzarlo per memorizzare i dati della sessione per un riutilizzo a breve termine. Non lo useresti per altre cose come cache a tutta pagina o come sostituto di MySQL.

Ci sono anche Wordpress come WP-Super-Cache che possono migliorare drasticamente le prestazioni di Wordpress (infatti, WP-Super-Cache può competere con i siti statici basati su HTML in molti casi)

In sintesi - Consiglio vivamente APC se si desidera "impostarlo e dimenticarlo, prodotto ben supportato".

33
SirStan

Una buona risposta è stata pubblicata su StackOverflow che risponde bene alla tua domanda.

https://stackoverflow.com/questions/28716/which-php-opcode-cacher-should-i-use-to-improve-performance

8

Solo per notare che le cose sono cambiate un po 'e sembra che APC non sarà incluso in PHP 6 core.

APC ha uno sviluppo lento e sembra che non sarà mai PHP 5.5. Per questo motivo, sembra che i ragazzi di PHP imposteranno la cache opcode di Zend OPCache come estensione PHP CORE. Ti interessa leggere di più qui http://wiki.php.net/rfc/optimizerplus .

Nota importante: Zend OPCache non ha una cache di dati utente come APC, quindi se hai bisogno di una cache di dati utente puoi usarla insieme a Memcache.

6
Nemke

APC sarà incorporato in PHP6, quindi è una scelta logica. Lo uso e l'incremento delle prestazioni è sorprendente. Se è necessario memorizzare nella cache qualcosa di diverso dai codici operativi (ovvero i risultati della query db), è possibile utilizzare anche APC per questo, ma non è possibile condividere le cache APC tra più server. Se devi solo memorizzare nella cache su un singolo server, APC è eccezionale. Se devi ridimensionare su più server e vuoi condividere una cache tra di loro, memcached è il tuo uomo.

Una cosa che vorrei fare, però, è creare una classe wrapper per qualsiasi cache (non opcode) che fai. In questo modo è possibile sostituire il motore di memorizzazione nella cache senza modificare il codice.

6
lo_fye

Se in esecuzione PHP almeno 5.50, OpCache è la soluzione migliore (libreria nativa PHP/PECL). Dovrebbe essere precompilata se si installa da binario.

http://php.net/manual/en/book.opcache.php

Se l'esecuzione PHP precedente alla 5.5, APC (cache OpCode nativa PHP/PECL) sarebbe la scelta più semplice, sebbene sia considerata non mantenuta e morta:

http://php.net/manual/en/book.apc.php

L'uso della funzionalità OpCache nativa di PHP dovrebbe farti risparmiare il problema di mantenere librerie di terze parti.

3
recurse

Memcache memorizza nella cache coppie chiave/valore, non codici operativi. Puoi usarlo insieme a una delle cache del codice operativo.

0
user10699