|
|
TUTORIEL PHP |
|
|
|
Optimiser vos applications PHP |
La popularité grandissante du Web met une pression croissante sur les logiciels et le matériel utilisé pour les applications. Cet article va vous donner les tuyaux pour réduire la charge de vos serveurs, et augmenter la capacité de vos applications sans avoir à vous ruiner en mises à jour matérielles.
(30/03/2004) |
|
(fourni
par )
Au-delà
de la configuration
Au-delà des astuces d'optimisation et de configuration, il y
a d'autres moyens pour améliorer les performances des applications
PHP sans avoir à remanier le code de votre application.
Le premier et le meilleur de ces outils est un cache d'opcode,
qui est aussi appelé un compilateur PHP, même si cette appellation
est un peu usurpée. Dans des conditions normales, avant qu'un
script PHP soit exécuté, il doit être analysé et converti en
une série d'instructions appelée opcode, que le moteur Zend
est capable de comprendre. C'est un processus plutôt rapide,
mais les grands scripts, qui incluent de nombreux fichiers peuvent
demander un temps un peu plus long. Même pour les petites applications,
la lecture du script depuis le disque, son analyse à chaque
requête se révèle être un gaspillage. En effet, les scripts
changent rarement entre deux exécutions, mais le code doit constamment
être analysé avant l'exécution.
C'est là qu'un cache d'opcode entre en jeu. Au lieu de répéter
constamment l'analyse du script, les instructions ainsi générées
sont placées dans une mémoire rapide ou sur le disque, pour
que les accès ultérieurs au script échappent à l'analyse. De
plus, comme les opcodes sont souvent stockés en mémoire, les
sollicitations du système de fichier sont réduites à une simple
vérification de modification du script mis en cache.
Il existe de nombreuses solutions de cache sur le marché, et
la plupart d'entre-elles ont ajouté un optimiseur de code, qui
intervient avant le stockage. Durant la traditionnelle opération
d'analyse, l'analyseur PHP essaie d'accélérer la génération
de l'opcode, et ne recherche pas les opérations optimales pour
le Zend Engine. Avec un cache d'opcode, comme l'analyse n'est
faite qu'une seule fois, il est profitable de passer un peu
plus de temps pour générer l'opcode, et l'optimiser pour que
l'exécution soit aussi rapide que possible. Le résultat, avec
un cache d'opcode optimisé, est une accélération des scripts
PHP de 40 à 600%.
Au niveau des solutions de cache, toutes les solutions offrent
le même niveau de performances, avec des différences mineures.
Mon cache préféré est actuellement Turck-MMcache,
qui était développé au début Dmitry Stogov. Ce compilateur particulier
est livré avec un mécanisme de cache particulièrement efficace,
et un optimisateur qui vous permet souvent de gagner encore
un peu plus de temps que la concurrence. Ce cache propose aussi
des fonctionnalités supplémentaires, comme un gestionnaire de
session en mémoire, qui peut être utilisé pour accélérer les
applications PHP qui dépendent des sessions. Malheureusement,
Dmitry n'a pas beaucoup de temps à consacrer à MMCache et le
projet est actuellement gelé. Un groupe de volontaire a promis
de poursuivre les efforts et d'entretenir le projet : avec un
peu de chance, ils vont réussir.
La suite de performances Zend (ZPS) est un accélérateur PHP
commerciale, offert par Zend, qui intègre un cache d'opcode
et un optimisateur, ainsi que des possibilités de cache de contenu.
Le gros avantage du ZPS est qu'il a été conçu pour les utilisateurs
experts et novices : il fournit une interface puissante et conviviale
à tous ces composants. C'est très important pour configurer
le cache, alors que MMCache impose la lecture de la documentation
et beaucoup d'expérimentation. Cependant, ZPS n'est pas gratuit,
contrairement à MMCache.Le modèle de licence commence à partir
de 499$ par serveur, ce qui le rend inaccessible aux opérateurs
de petits sites.
A coté de ZPS, il y a aussi APC, une initiative Open Source,
qui a fait beaucoup de vagues l'an dernier. Ses performances
sont similaires à celles de ZPS et MMcache, mais le manque d'optimisateur
le rend plus lent dans certaines situations. Comme c'est un
projet qui est activement entretenu, il ne fait aucun doute
qu'il va rattraper les autres solutions à ce niveau-là.
Je souhaite aussi mentionner le IonCube PHP Accelerator, qui
a été l'un des tous premiers cache d'opcode. Il fonctionne encore
bien avec la série des PHP 4.3m mais il n'y a plus de développements
visibles sur le site depuis plus d'un an, et par conséquent,
il ne fonctionne pas aussi bien que MMCache ou APC.
|
|
|