article eaccelerator

Eaccelerator digne successeur de TurkMMcache ?

eAccelerator est un script de cache de code compilé comme il y en a eu une kirielle vers 2002-2003, chacun de ces projets sont tombé à l'abandon par manque de temps, de moyen et surtout parce que l'auteurs de la solutions qui se détachait de la masse par ses performances, j'ai cité TurckMMcache, a tout simplement été engagé par Zend pour le développement de la propre solution de cache de code compilé de Zend.

Euuh... Tu peux pas être plus clair ?

Oui, bon évidemment, je m'écarte du sujet, ça c'était l'aspect historique des choses. Depuis, TurkMMcache étant tombé à l'abandon, un programmeur a décidé de reprendre le concept et le code de Turck et d'en faire sa propre solution : eAccelerator.
Son auteur ne cache pas le fait que sa solution permet d'augmenter les performances de son serveur jusqu'à 80% plus rapide.

Qu'est-ce qu'un cache de code compilé ?
Depuis php 4, le moteur de php traite la page php en la parsant, c'est à dire qu'il analyse la page, et la traduit dans un code plus facilement compréhensible par le moteur principal de php. Le but d'un cache de code compilé est de reprendre ce code intermédiaire et de le stocker en mémoire pour le ressortir quand la page est appelée. Résultat : on supprime une étape, sûrement une des plus laborieuse pour le serveur : le parsing, ce qui fait augmenter les performances et ce qui donc permet d'accueillir plus de visiteurs simultanément sur votre site.

Les pièges d'une telle solutions
Alors, à ce stade, on pourrait se dire "super, c'est la solution miracle !". Mais je dis STOP ! Avant de foncer comme un péter sur le site de eAccelerator, prenez la peine au moins de lire ceci :
eAccelerator compare la page qu'il peut renvoyer au moteur de php avec la page demandée. En clair, ça veut dire que si on donne à analyser une page qui affiche le pseudo d'un visiteur, cette page sera à chaque fois stockée, comparée, et réécrite par eAccelerator, ce qui n'améliore pas les performances de php...
Si vous possédez un site de ce genre, inutile d'installer eAccelerator, il ne fera que ralentir votre serveur inutilement, mais si votre possède uniquement une partie réservée aux membres, je propose une solution à ça ici plus bas.
Si par contre, vous possédez un site du genre à Fast-PHP, eAccelerator sera un compagnon très utile à php.

eAccelerator : Installation sous Windows

Je ne détaillerai ici que l'installation sous Windows, pour les utilisateurs de Linux, rendez-vous sur le site de eAccelerator pour connaître la démarche à suivre pour l'installer. Notez toute fois que l'installation dans le php.ini est commune aux systèmes d'exploitation.

Dans ce tutoriel, je suppose que vous connaissez l'emplacement de votre php.ini et que vous avez une connaissance suffisante de Windows, que vos pages php ne sont pas cryptées et que le Zend Optimizer n'est pas installé sur votre machine

1) Installer eAccelerator comme extension de php

Commencez par télécharger la dernière version de eAccelerator pour Windows.
Les téléchargements sont classés de cette manière :
eaccelerator_win_version_de_php.dll
Téléchargez donc la dll correspondant à votre version de php.
Copiez-la ensuite dans le répertoire /ext (pour php 5) ou dans /extensions (pour php 4).
Ouvrez ensuite votre php.ini, nous allons maintenant nous lancer dans la configuration brute de eAccelerator :
(la plupart des explications des variables sont tirées directement du guide d'installation du site de eAccelerator, car il est très clair. Pour certaines, je les ai clarifiées pour une meilleure compréhension par tout le monde)

extension="eaccelerator.dll"
Cette variable est à placer à la fin de la série des extensions à charger dans php, elle permet de charger eAccelerator dans php.

eaccelerator.shm_size = "64"
Cette variable permet de définir la quantité de mémoire partagée à allouer à eAccelerator. Valeur par défaut : 0 qui correspond à la valeur par défaut du système d'exploitation.

eaccelerator.cache_dir = "/tmp/eaccelerator"
Répertoire dans lequel sont stockées les pages "cachées" de eaccelerator, pour Windows, le chemin doit être du type "C:pathtotmp".

eaccelerator.enable = "1"
Active ou désactive eAccelerator, 1 pour activé et 0 pour désactivé. Par défaut : 1.

eaccelerator.optimizer = "1"
Active ou désactive l'optimiseur de eAccelerator qui sert à augmenter les performances. 1 pour activé et 0 pour désactivé. Par défaut : 1.

eaccelerator.debug = "0"
Active ou désactive les logs de eAccelerator. Par défaut : 0.

eaccelerator.check_mtime = "1"
Active ou désactive le comparateur (basé sur la date) de eAccelerator. Si vous modifiez souvent vos scripts, donnez la valeur "1" à cette variable, sinon donnez-lui la valeur "0".

eaccelerator.filter = ""
Specifie les extensions de fichiers susceptible d'être mis en cache par eAccelerator. Exemple: "*.php *.phtml". La négation de cette exemple est "!*.php *.phtml" (notez le caractère "!" au début de l'expression. Valeur par défaut : "", en l'occurence, met en cache tous les fichiers php).

eaccelerator.shm_max = "0"
Spécifie la quantité de mémoire partagée maximale pour l'utilisation de la fonction "eaccelerator_put()". Exemple : 10240, 10K, 1M. Valeur par défaut : "0", en l'occurence, aucune limite de mémoire.

eaccelerator.shm_ttl = "0"
Quand eAccelerator a atteint sa limite de mémoire partagée, il enlèvera de cette mémoire tous les scripts qui n'ont pas été sollicités depuis "shm_ttl" seconde. Valeur par défaut : 0, en l'occurence, n'enlève aucun script de la mémoire.

eaccelerator.shm_prune_period = "0"
Quand eAccelerator a atteint sa limite de mémoire partagée, il essaiera d'enlever les scripts les plus vieux dont le code compilé a été créer il y a plus de "shm_prune_period" seconde. Valeur par défaut "0", en l'occurence, n'enleve aucun script de la mémoire.

eaccelerator.shm_only = "0"
Active ou désactive l'utilisation du disque pour le stockage des données (n'a aucun effet sur les données relatives aux sessions et le cache du contenu, on parle ici de code compilé intermédiaire). Valeur par défaut : "0", en l'occurence, l'utilisation du disque ET de la mémoire est autorisé.

eaccelerator.compress = "1"
Active ou désactive la compression du cache du contenu. Valeur par défaut : "1", en l'occurence, les données mises en cache sont compressées.

eaccelerator.compress_level = "9"
Specifie l'indice de compression utilisé pour le stockage des données mise en cache. Valeur par défaut : "9", en l'occurence, l'indice de compression maximum.

eaccelerator.keys = "shm_and_disk"
eaccelerator.sessions = "shm_and_disk"
eaccelerator.content = "shm_and_disk"
Specifie l'endroit où les clés, les données relatives aux sessions, ainsi que le contenu, sont stockées (disque ou mémoire). Liste des valeurs possibles :
"shm_and_disk", stocke les données en mémoire et sur disque (valeur par défaut)
"shm", stocke les données en mémoire ou sur le disque, si la mémoire est pleine, où si la taille des données est supérieur à "eaccelerator.shm_max".
"shm_only", stocke les données en mémoire uniquement.
"disk_only", stocke les données sur disque uniquement
"none", aucun stockage des données

eaccelerator.admin.name="yourusername"
eaccelerator.admin.password="yourpassword"
Une interface d'administration est disponible pour interagir ou consulter les informations utiles et relatives à eAccelerator. Il s'agit du script eaccelerator.php.
Pour des raisons évidentes, nous vous conseillons de bien sécuriser l'endroit où vous allez poser ce script. eaccelerator.php possède sa propre authentification
par mot de passe (Authentification basique).
Pour creer le couple nom d'utilisateur/mot de passe, il vous suffit de taper ceci (vous devez avoir php/cli ou php/cgi) :

php -q eaccelerator_password.php

Ou alors, rendez-vous sur le fichier "eaccelerator_password.php" disponible dans le zip distribué par eAccelerator. Ensuite, il vous suffit de remplir le formulaire et de copier-coller les directives pour le php.ini qui vous seront données.

Une interface d'administration de eAccelerator est disponible dans le zip distribué sur le site de eAccelerator, le fichier porte le nom de "eaccelerator.php".

Le mot de la fin

Voilà, j'espère que ce petit tutoriel vous aura aidé.
Comme promis, voici un petit truc pour ceux qui possèdent un espace membres changeant en fonction du membre (affichage du pseudo, menu personnalisé, etc...) :
Renommez toutes les pages de votre espace membres uniquement avec une extension commune du type .phtml ou .php3 donnez à la variable "eaccelerator.filter" la valeur "!*.phtml" ou "!*.php3" en fonction de l'extension que vous aurez choisi. Cela aura pour effet de désactiver le cache pour toutes les pages possédant une extension du type que vous aurez choisi.

Notes complémentaires

La variable "eaccelerator.filter" ne prend pas en charge les restrictions appliquées à des fichiers particulier, il est donc impossible de faire une restriction sur un fichier "foo.php".

eAccelerator cache séparément les pages incluses dans un fichier avec la fonction include() de php.

Téléchargements

dll pour Windows
Zip contenant entre autre les fichiers php pour l'administration de eAccelerator.