Accueil
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi Eclipse MS-Office SQL & SGBD Oracle  4D  Business Intelligence

Cours de PHP 5

Date de publication : 12 mai 2008 , Date de mise à jour : 23 juillet 2008


X. Optimisation
X-A. Optimiser un script PHP
X-B. Mise en cache
X-C. Compiler un script PHP
X-D. Compiler PHP
X-E. Développer une extension


X. Optimisation


X-A. Optimiser un script PHP

Une fois que votre application fonctionne parfaitement, vous pouvez essayer d'optimiser son temps d'exécution ou sa consommation de mémoire. Cependant, prenez garde à ne pas tomber dans l'eccès.

Optimiser le code PHP est généralement un faux problème pour plusieurs raisons :
  • Ce qui prend le plus de temps n'est pas le code PHP mais les accès réseau (requêtes BDD, webscraping) ou disque (includes) ;
  • Un outil de cache d'opcode peut se charger d'optimiser votre code PHP à votre place (dans une certaine mesure) ;
  • Optimiser le code à outrance produit habituellement du code très complexe, donc difficile à maintenir.

X-B. Mise en cache

La mise en cache vous permet de ne pas éxécuter de nouveau du code qui a déjà été exécuté récemment. Cela comporte une notion de temporalité.

Prenez l'exemple d'un site d'actualités dans lequel la page d'accueil présente les actualités les plus récentes. Chaque visiteur de la page d'accueil oblige PHP à envoyer une requête SQL par le réseau, attendre la réponse du SGBD, récupérer les données depuis le socket ouvert pour l'occasion, les traiter puis les afficher. Sachant que le taux de visites est très nettement supérieur à la fréquence de mise à jour des actualités, la très grande majorité des requêtes sont redondantes.

Admettons que notre site d'actualités génère 500 visites quotidiennes mais qu'il y a tout juste 10 nouvelles actualités par jour. Cela suppose 10 mises à jour de la page d'accueil contre 500 visites : entre 490 et 500 de ces visites quotidiennes obligent donc PHP à effectuer inutilement les traitements résumés ci-dessus...

Une solution de mise en cache serait par exemple de générer le code HTML complet de la page d'accueil à chaque mise à jour de la BDD. Ainsi, aucune requête inutile n'est envoyée au SGBD. Cependant, cette technique n'est pas raisonnable pour la totalité du site à cause de la trop grande quantité potentielle de contenu à compiler à l'avance. De plus, le contenu d'une URL peut changer en fonction de l'internaute. Il faut donc avoir recours à des techniques plus subtiles, et c'est ici que les outils de mise en cache deviennent intéressants.

Exemples d'outils :

X-C. Compiler un script PHP

Dans certaines situations, il peut être intéressant de compiler son code PHP en bytecode. Nous pourrions par exemple avoir besoin de distribuer notre application sous forme d'exécutable afin d'éviter aux utilisateurs de devoir installer PHP ; une autre raison est simplement de distribuer une application PHP en protégeant son code source (obfuscation).

Exemples d'outils :

X-D. Compiler PHP

N'oubliez pas que compiler PHP peut améliorer les temps de réponse, en particulier si vous êtes sous Windows puisque les exécutables distribués sont compilés contre d'anciennes DLL. Certaines personnes ont remarqué jusqu'à 30% d'amélioration.

Compiler PHP vous permet aussi d'activer uniquement les extensions dont vous avez besoin, ce qui réduit l'empreinte mémoire.

Je ne vais pas m'étendre sur le sujet, puisqu'il y a beaucoup de concepts qui dépassent le cadre des connaissances requises d'un développeur PHP.

Pour compiler PHP, vous devez également compiler ses dépendances. Certaines sont obligatoires (distribution standard : bindlib, libiconv et libxml2), d'autres sont optionnelles (extensions). Si vous souhaitez compiler PHP pour l'utiliser comme module Apache, vous aurez également besoin de compiler Apache.

Si vous êtes sous un système Unix ou dérivé, vous êtes probablement habitué à compiler les applications avant de les utiliser.

En revanche, si vous êtes sous Windows, sachez que les fichiers binaires distribués sur php.net sont compilés avec Microsoft Visual Studio 6. Ce compilateur n'étant plus distribué par Microsoft, il devient difficile de se le procurer mais PHP peut être compilé à l'aide d'une version plus récente de Visual Studio. Cependant, il n'est pour le moment pas possible de compiler Apache avec une version plus récente que Visual Studio 6. En résumé, pour compiler PHP comme module Apache, vous avez besoin de Visual Studio 6.

Cela pose certains problèmes outre la disponibilité du compilateur : les nouvelles versions de Visual Studio sont plus efficaces, les binaires compilés sont plus rapides, plus fiables, etc. Il n'y a pour le moment pas de solution à ce problème, seul VS 6 permet de compiler PHP comme module Apache.

info Elizabeth Marie Smith est en train de chercher à compiler PHP et toutes ses dépendances avec Visual Studio, version 2005 au minimum. Si vous souhaitez l'aider, rendez-vous sur son blog : en http://elizabethmariesmith.com/

X-E. Développer une extension

Voici un sujet à la fois vaste et primordial. Il n'est pas demandé à un développeur PHP de savoir développer une extension pour PHP, mais il faut savoir que c'est possible.

PHP étant écrit en langage C, ses extensions suivent naturellement son exemple. Une extension PHP utilise l'API du Zend Engine. Pour rappel, PHP 5 utilise le Zend Engine version 2, tandis que PHP 6 en utilisera la version 3.

info Une extension écrite en langage C donne de meilleures performances qu'un script écrit en langage PHP. Dans certaines situations, il peut être intéressant de compiler une extension plutôt que d'écrire un script.

 

Copyright ©2008 Guillaume Rossolini. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.

Vos questions techniques : forum d'entraide Accueil - Publiez vos articles, tutoriels, cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter - Copyright 2000..2005 www.developpez.com