J'ai lu cet article: http://www.mysqlperformanceblog.com/2006/09/27/apc-or-memcached/ depuis longtemps .. Je veux obtenir le meilleur moteur de cache disponible pour que mon application soit vraiment rapide. Bien sûr, je ne veux pas trop de cache, mais je veux au moins choisir la meilleure chose qui soit. Dans cet article , il est dit Memcached est lent et apc est rapide , alors pourquoi tout le monde est choisissant memcached ?
http://framework.zend.com/manual/en/zend.cache.backends.html#zend.cache.backends.twolevels ici est dit "utilisez un rapide (mais limité) comme Apc, Memcache ... et un "slow" comme File, Sqlite ... "Pensez-vous qu'utiliser Apc comme rapide et Memcache comme lent est une bonne idée?
apc_store
. Le cache Opcode seul rend PHP quelques fois plus rapide.apc_store()
n'est qu'un bonus supplémentaire en plus de cela.Réponses:
Memcached est un système de mise en cache distribué, alors qu'APC n'est pas distribué - et principalement un cache d'opcode.
Si (et seulement si) vous avez une application Web qui doit vivre sur différents serveurs Web (équilibrage de charge), vous devez utiliser Memcache pour la mise en cache distribuée. Sinon, tenez-vous en à APC et à son cache.
Vous devriez toujours utiliser un cache opcode, ce qu'APC est (également APC sera intégré dans php6 iirc, alors pourquoi ne pas commencer à l'utiliser maintenant).
Vous pouvez / devriez utiliser les deux à des fins différentes.
la source
opcode
cache?opcode
cache est celui qui compile le code PHP brut en code machine ("opcode") et le stocke ensuite sous la forme compilée pour les demandes futures (jusqu'à ce qu'il détecte que le fichier PHP d'origine a changé). Cela signifie que PHP n'a pas à exécuter cette étape de compilation à chaque requête, ce qui permet de gagner du temps. C'est juste l'un des moyens de garantir un site rapide (parmi tant d'autres).Memcached si vous avez besoin de préserver l'état sur plusieurs serveurs Web (si la charge est équilibrée et qu'il est important que ce qui se trouve dans le cache soit le même pour tous les serveurs).
APC si vous avez juste besoin d'accéder à une mémoire rapide pour lire (et écrire) sur un (ou chaque) serveur.
N'oubliez pas qu'APC peut également compiler et accélérer le temps d'exécution de votre script. Ainsi, vous pouvez par exemple utiliser APC pour augmenter les performances d'exécution, tout en utilisant Memcached pour le stockage en cache.
la source
Le principal avantage d'APC est le cache opcode. Comme PHP 5.5 a intégré OpCache à son cœur et qu'APC pour PHP 5.4 est toujours signalé comme bêta, ce n'est pas une annonce officielle, mais le développement d'APC serait abandonné dans un proche avenir.
Je vous recommande donc de choisir Memcached.
la source
J'utilise l'un pour la vitesse et l'autre pour synchroniser tous mes serveurs. Si vous utilisez Memcache, gardez à l'esprit les ports ouverts que vous devrez bloquer avec iptables.
la source
Hey Thomaschaaf, j'espère que cet outil n'est pas en retard pour vous, mais veuillez noter qu'APC a des problèmes liés au "cache utilisateur". Pour faire une histoire courte, lorsque vous définissez des délais d'expiration pour les entrées de cache, ou si votre apache se bloque dans le code APC interne (timeout, par exemple), alors vous pouvez rencontrer des problèmes.
J'ai une entrée sur le problème ici: http://nirlevy.blogspot.com/2009/06/apc-futexwait-lockdown-make-your-apache.html , et vous devriez également lire http: //t3.dotgnu. info / blog / php / user-cache-timebomb.html (de l'un des développeurs APC, je pense)
la source
J'utilise uniquement APC car APC est un cache de code et agit comme Memcache! Un seul fichier de configuration au lieu de 2.
Et un seul endroit pour surveiller les deux cache .....
la source
Cela dépend de ce que vous faites, mais pour mes sites Web Drupal fonctionnant sur un VPS, je trouve qu'APC fonctionne très bien! Si vous exécutez CentOS 6, il est disponible en tant que mise à jour yum si simple à installer et sans configuration car les valeurs par défaut sont raisonnables. Une évidence à mon humble avis.
la source