ATTENTION : cet article est peut-être obsolète.
Un très grand nombre de sites web, CMS, blog ou galleries photo sont écrits en PHP. On obtient ainsi des pages mises à jour de manière dynamique. Mais les ennuis commencent lorsque l’on fait tourner le tout sur une machine aux ressources limitées…
Si, comme moi, vous faites tourner un site web sur une machine quelque peu ancienne, peu performante, vous avez dû remarquer qu’obtenir de bonnes performances lorsqu’on utilise PHP n’est pas une sinécure. Tout se passera bien si vous vous contentez de petits sites. Mais l’utilisation d’un CMS comme Drupal ou d’une gallerie un peu évoluée risque de pas mal ramer. Comment faire ?
La cause de tout ça tient dans le fait que les pages PHP sont réinterprétées à chaque requête : d’où des temps de calcul, donc une lenteur induite. Pour y remédier, l’idée est de n’effectuer le calcul que si la page a changé depuis la dernière requête. On utilise donc un cache. J’ai choisi eaccelerator.
Si votre serveur tourne sous Debian Sarge, il vous sera sans doute nécessaire d’ajouter le dépot suivant dans le fichier /etc/apt/sources.list :
deb http://packages.dotdeb.org stable all
Installer ensuite le paquet de eaccelerator :
# apt-get update # apt-get install php4-eaccelerator
Vous devrez également adapter le fichier /etc/php4/eaccelerator.ini pour prendre en compte cette nouvelle extension. Ajoutez les lignes suivantes (en les adaptant à vos besoins) :
extension=eaccelerator.so eaccelerator.shm_size="16" eaccelerator.cache_dir="/tmp/eaccelerator" eaccelerator.enable="1" eaccelerator.optimizer="1" eaccelerator.check_mtime="1" eaccelerator.debug="0" eaccelerator.filter="" eaccelerator.shm_max="0" eaccelerator.shm_ttl="0" eaccelerator.shm_prune_period="0" eaccelerator.shm_only="0" eaccelerator.compress="1" eaccelerator.compress_level="9"
Vérifiez bien que le répertoire servant de cache (eaccelerator.cache_dir) est valide, créez-le si nécessaire :
# mkdir -p /tmp/eaccelerator
Vérifiez également qu’il a les bonnes permissions : l’utilisateur sous lequel tournent apache et php (ici www-data) doit être propriétaire du répertoire.
# chown www-data.www-data /tmp/eaccelerator
Enfin, rechargez la configuration d’apache :
# invoke-rc.d apache2 reload
Vous constaterez alors sans mal une très nette amélioration des performances des sites PHP. Sur mon serveur (un vieux laptop Celeron 500 avec 64 Mo de RAM), ça change tout !