Cet article présente des solutions pratiques pour l'optimisation, la mise en mémoire tampon et la compression PHP.
En tant que langage de programmation Web populaire, le plus grand avantage de PHP est la rapidité. PHP4 a très bien fait cela, et il est difficile de trouver un langage de script plus rapide que lui. Mais si la charge de votre application est importante, si votre bande passante est relativement faible ou s'il existe d'autres goulots d'étranglement qui affectent les performances de votre serveur, vous pouvez tout aussi bien essayer certaines des solutions que je vous ai prescrites pour voir si elles fonctionnent.
1. Optimisation du code
Lorsqu'il s'agit d'optimisation de code, vous pensez peut-être à un code soigné et clair, mais ce n'est pas le sens de cet article, car si vous voulez rechercher la vitesse, vous devez apporter les ajustements correspondants au code source PHP. De manière générale, les commentaires redondants sont supprimés pour rendre le code illisible. Mais pour un programmeur doté de bonnes qualités, c'est tout simplement incroyable. Heureusement, Zend Technologies a publié le moteur d'optimisation Zend pour vous aider à le faire. C'est gratuit maintenant, mais vous devez suivre la licence Zend Optimizer. Ce produit peut optimiser le code intermédiaire généré par le moteur.
L'installation de ce moteur est relativement simple. Après avoir téléchargé la version correspondant à la plateforme, décompressez le fichier compressé, puis ajoutez les deux lignes suivantes au fichier php.ini, redémarrez le serveur web, et le tour est joué.
zend_optimizer.optimization_level=15
zend_extension="/chemin/vers/ZendOptimizer.so"
zend_loader.enable=Off
S'il s'agit d'une plateforme Win32, cela devrait être :
zend_optimizer.optimization_level=15
zend_extension_ts="C:chemin ou endOptimizer.dll"
zend_loader.enable=Désactivé
! Ce n'est pas une erreur ? Pourquoi trois lignes ? En fait, la troisième ligne est facultative. Puisqu'il semble que désactiver zend_loader puisse améliorer un peu la vitesse, cela vaut la peine de mettre cette troisième ligne dans le php.ini. Il convient de noter que la condition préalable pour le désactiver est que vous n'utilisiez pas le programme de cryptage Zend.
2. Buffering
Si nous voulons améliorer encore la vitesse, nous devons envisager d'utiliser la technologie de mise en mémoire tampon. Il existe des solutions alternatives, notamment Zend Cache (version bêta), APC et Afterburner Cache, ainsi que jpCache.
Ce qui précède sont tous des modules tampons. Ils stockent le code intermédiaire généré par la première requête du fichier .php dans la mémoire du serveur Web, puis renvoient la version « compilée » pour les requêtes ultérieures. Étant donné que cela réduit les lectures et écritures sur le disque, ainsi que tout le travail en mémoire, ce processus peut améliorer considérablement les performances des applications.
Il existe de nombreux produits de ce type facilement disponibles, alors qui devriez-vous choisir ?
Zend Cache est un bon produit commercial. Après avoir chargé ces grandes pages PHP pour la première fois, vous ressentirez évidemment la vitesse augmenter et le serveur mettra de côté plus de ressources. Malheureusement, ce produit coûte de l'argent, mais dans certains cas, vous ne voulez pas lésiner sur l'argent.
Afterburner Cache est un produit de Bware Technologies et est actuellement en version bêta. Il semble être le même que Zend Cashe, mais il ne peut pas obtenir d'aussi bons résultats que Zend Cache, ni fonctionner avec le moteur d'optimisation Zend, mais il est gratuit. , donc je Ce module est utilisé.
APC (Alternative PHP Cache) est un autre module gratuit publié par Community Connect qui semble prêt pour les environnements de production.
3. Compression du contenu Web
Pour des réseaux de plus en plus encombrés, économiser la bande passante est aussi précieux que d'économiser l'eau. Selon les normes de l'IETF, la plupart des navigateurs doivent prendre en charge le contenu compressé à l'aide de gzip. Cela signifie que vous pouvez envoyer du contenu compressé par gzip au navigateur, et le navigateur décompressera les données de manière transparente.
mod_gzip est un module Apache gratuit lancé par Remote Communications, qui peut compresser le contenu Web statique et l'envoyer au navigateur. Pour la plupart des pages Web statiques, ce module convient. Bien que
des personnes de la société Remotecommunications aient déclaré que ce module prend en charge tout le contenu dynamique généré par mod_php, mod_perl, mod, etc., il ne semble toujours pas fonctionner. À en juger par la liste de diffusion mod_gzip, ce problème ne devrait pas être résolu. jusqu'au 1.3.14.6f.
Si nous voulons compresser du contenu dynamique, nous pouvons utiliser class.gzip_encode.php, une classe PHP utilisée au début et à la fin du script. Pour l'ensemble du site Web, les fonctions auto_prepend et auto_append du php.ini sont appelées. Pour plus de détails, vous pouvez lire le programme de ce cours. Ce programme est bien commenté et l'auteur vous dit presque tout. Mais avant de l'utiliser, votre PHP doit être compilé pour supporter zlib.
Pour PHP 4.0.4, une nouvelle solution consiste à utiliser ob_gzhandler, qui peut obtenir le même effet que la classe ci-dessus. Ajoutez simplement la phrase suivante au php.ini :
output_handler = ob_gzhandler;
Cela permet à PHP d'activer la mise en mémoire tampon de sortie et de compresser toutes les sorties. S'il y a une raison particulière pour laquelle vous ne souhaitez pas que tout le contenu soit compressé et affiché, vous pouvez ajouter la ligne suivante au fichier .htaccess pour compresser les fichiers dans le répertoire correspondant.
php_value output_handler ob_gzhandler
peut également être ajouté directement dans le code PHP :
ob_start("ob_gzhandler");
Cette technologie de compression est très efficace, mais pour les utilisateurs de Netscape Communicator, elle semble incomplète car elle ne peut pas compresser les fichiers graphiques ? la compression des fichiers jpeg et gif ? IE n'a pas ce problème.
Conclusion :
L'utilisation des techniques décrites dans cet article devrait améliorer les performances de votre site Web, mais sachez que :
- PHP n'est peut-être pas la cause du goulot d'étranglement, vérifiez s'il y a d'autres causes (par exemple, base de données).
- Vous ne pouvez pas maximiser l'état des performances du serveur. Alors avant de vous plaindre de PHP et de sa mise en mémoire tampon, demandez-vous s'il est temps de mettre à niveau votre serveur ou d'adopter une technologie d'équilibrage de charge dynamique (c'est beaucoup d'argent).
- Ne sous-estimez pas la compression du contenu. Pendant que vous constatez des améliorations de vitesse sur vos applications PHP sur votre intranet de 100 Mo, n'oubliez pas où les utilisateurs de votre modem se plaignent de vos pages HTML de 100 Ko.