PHP accélérateurs : eAccelerator XCache ionCube Nusphere APC MemCache (cache PHP)
Par PlaceOweb le dimanche, mai 10 2009, 13:38 - PHP - Lien permanent
Selon leur système de cache, quel est le meilleur accélérateur de code PHP ?
Les différents PHP cache accélérateur
Les accélérateurs maintenus
APC
APC — Cache PHP alternatif
Le "Alternative PHP Cache" (APC) est un cache d'opcode libre et ouvert pour PHP permetant d'optimiser le code PHP et le cache de données et le code compilé PHP depuis le compilateur bytecode en mémoire partagée. Il a été conçu afin de fournir un framework libre, ouvert et robuste pour la mise en cache et l'optimisation de code intermédiaire PHP. (extension PECL, incluse en standard à partir de PHP6)
eAccelerator
eAccelerator est né en Décembre 2004 comme une branche de Turck MMCache projet. Turck MMCache a été créé par Dmitry Stogov et une grande partie de la eAccelerator code est toujours fondée sur son travail. eAccelerator contenait également un codeur PHP et chargeur, mais le développement personnel de l'encodeur abandonnées et ont supprimé cette fonction après Décembre 2006.
XCache
XCache est une manière rapide, stable cacher opcode de PHP qui a été testé et fonctionne sur les serveurs de production sous haute charge. Il est testé sur linux. Threadsafe / Windows est également soutenu. Il est conçu pour surmonter un grand nombre de problèmes qui ont été observés avec d'autres concurrents opcachers, comme pouvant être utilisés avec les nouvelles versions de PHP. Petit nouveau sur le bloc développé par moo qui est également l'un des développeurs de Lighttpd. Développée afin de surmonter certaines des limitations des solutions existantes à ce moment-là.
Nusphere PhpExpress
NuSphere PhpExpress est un accélérateur PHP gratuit qui accélère l'exécution régulière de fichiers PHP et fournit également un soutien pour le chargement des fichiers PHP encodé avec Nu-Coder - PHP Encoder NuSphere. PhpExpress charges encodés scripts PHP PHP directement dans le moteur permet de gagner du temps et améliorer la performance de l'interpréteur PHP. PhpExpress met également en œuvre pour la mise en cache PHP et le moteur accélère, même si l'exécution de script PHP n'est pas codée.
MemCache
Le module Memcache fournit une interface procédurale maniable ainsi qu'orientée objet à Memcache, un démon fortement efficace dans la gestion du cache, qui est principalement destiné à faire baisser la charge des bases de données dans les applications web dynamiques.
Les accélérateurs obsolètes qui ne sont plus maintenus
ionCube PHP Accelerator (PHPA)
Turck MMCache
Comparaison des accélérateurs PHP
On se basera sur Benchmarking Drupal with PHP op-code caches: APC, eAccelerator and XCache compared
Requests per Second | Single Request (milliseconds) | Memory (Maximum, MB) | Memory (Minimum, MB) | |
None | 10.41 | 96.08 | 24 | 24 |
eAccelerator | 31.26 | 31.99 | 23 | 18 |
XCache | 30.28 | 33.02 | 29 | 19 |
APC | 30.45 | 32.84 | 21 | 21 |
Dont le retour avec PHP 5.2.4 est de l'utilisation d'un accélérateur est :
- Un gain de vitesse est d'environ 3X.
- eAccelerator est légèrement mieux que les APC ou XCache tant en termes de rapidité et d'utilisation de la mémoire.
MediaWiki et le cache
Lors de l'installation du Wiki MediaWiki , il teste la présence de Turck MMCache, eAccelerator, APC et XCache.
Conclusion
Ayant déjà testé eAccelerator dont l'accélération est fulgurante sur des produits tels qu'eZpublish et vu que APC est prévu en natif dans PHP 6.0, nous allons essayer d'installer APC sur PHP 5.3
Note : sous Debian, je n'ai pas chercher la complication et j'ai utiliser un paquet tout fait parmis :
- php-apc - APC (Alternative PHP Cache) module for PHP 5
- php5-apc - apc module for php5
- php5-memcache - memcache module for php5 (memcache extension module for PHP5)
- php5-xcache - xcache module for php5 (Fast, stable PHP opcode cacher)
Compilation d'extensions PECL partagées avec la commande pecl
Sans spécifier la version; pecl prends la dernière version stable.
On peut également installer une version spécifique en utilisant la commande :
pecl install extensionChoisie-{version}
[root@monserveur bin]# ./pecl install apc-3.1.2 downloading APC-3.1.2.tgz ... Starting to download APC-3.1.2.tgz (123,459 bytes) .................done: 123,459 bytes 45 source files, building running: phpize Configuring for: PHP Api Version: 20041225 Zend Module Api No: 20090115 Zend Extension Api No: 220090115 Enable per request file info about files used from the APC cache [no] : Enable spin locks (EXPERIMENTAL) [no] : building in /var/tmp/pear-build-root/APC-3.1.2 running: /tmp/pear/temp/APC/configure --enable-apc-filehits=no --enable-spinlocks=no .... ---------------------------------------------------------------------- Libraries have been installed in: /var/tmp/pear-build-root/APC-3.1.2/modules If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the `LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the `LD_RUN_PATH' environment variable during linking - use the `-Wl,--rpath -Wl,LIBDIR' linker flag - have your system administrator add LIBDIR to `/etc/ld.so.conf' See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ---------------------------------------------------------------------- Build complete. Don't forget to run 'make test'. running: make INSTALL_ROOT="/var/tmp/pear-build-root/install-APC-3.1.2" install Installing shared extensions: /var/tmp/pear-build-root/install-APC-3.1.2/APP/PHP/lib/php/extensions/no-debug-non-zts-20090115/ running: find "/var/tmp/pear-build-root/install-APC-3.1.2" | xargs ls -dils 393220 4 drwxr-xr-x 3 root root 4096 mai 15 12:22 /var/tmp/pear-build-root/install-APC-3.1.2 393279 4 drwxr-xr-x 3 root root 4096 mai 15 12:22 /var/tmp/pear-build-root/install-APC-3.1.2/APP 393280 4 drwxr-xr-x 3 root root 4096 mai 15 12:22 /var/tmp/pear-build-root/install-APC-3.1.2/APP/PHP 393281 4 drwxr-xr-x 3 root root 4096 mai 15 12:22 /var/tmp/pear-build-root/install-APC-3.1.2/APP/PHP/lib 393282 4 drwxr-xr-x 3 root root 4096 mai 15 12:22 /var/tmp/pear-build-root/install-APC-3.1.2/APP/PHP/lib/php 393283 4 drwxr-xr-x 3 root root 4096 mai 15 12:22 /var/tmp/pear-build-root/install-APC-3.1.2/APP/PHP/lib/php/extensions 393284 4 drwxr-xr-x 2 root root 4096 mai 15 12:22 /var/tmp/pear-build-root/install-APC-3.1.2/APP/PHP/lib/php/extensions/no-debug-non-zts-20090115 393278 540 -rwxr-xr-x 1 root root 545796 mai 15 12:22 /var/tmp/pear-build-root/install-APC-3.1.2/APP/PHP/lib/php/extensions/no-debug-non-zts-20090115/apc.so Build process completed successfully Installing '/APP/PHP/lib/php/extensions/no-debug-non-zts-20090115/apc.so' install ok: channel://pecl.php.net/APC-3.1.2 configuration option "php_ini" is not set to php.ini location You should add "extension=apc.so" to php.ini
Ressources
- php.net
- Cache PHP alternatif (APC)
- wikipedia.org
- Benchmarking Drupal with PHP op-code caches: APC, eAccelerator and XCache compared
- developpez.net
- Optimiser son serveur : Installation d'APC (le cache d'opcode APC)
- Tester son serveur http ; Comment simuler du trafic sur son serveur http grâce à apachebench