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 Direction PHP)

<< 1. Commencer | 2. Configuer PHP | 3. Optimiser php.ini
4. Au-dela de la configuration | 5. Cacher en mémoire

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.

<< 1. Commencer | 2. Configuer PHP | 3. Optimiser php.ini
4. Au-dela de la configuration | 5. Cacher en mémoire
 
Ilia Alshanetsky pour JDN Développeurs
 
Accueil | Haut de page