Keyword - performance

Fil des billets - Fil des commentaires

mercredi 22 novembre 2006

12 astuces d'optimisation de performance PHP

Je suis tombé complètement par hasard (enfin, par celui des apports de Blogdigger) sur un article présentant 12 astuces pour optimiser les performances de son code PHP suite à une présentation sur le sujet d'Ilia Alshanetsky à la Zend Conference (les slides sont disponibles).

C'est tellement pertinent que je les reprends telles quelles ici, en français :

  1. Si vous pouvez déclarer une méthode statique static, faites-le : les performances sont multipliées par 4.
  2. Éviter les méthodes automagiques comme __get, __set ou __autoload.
  3. require_once et son copain include_once sont très coûteux.
  4. Utilisez des chemins absolus dans les appels à require ou include quand vous le pouvez : PHP perdra moins de temps à résoudre les chemins système.
  5. Utilisez $_SERVER['REQUEST_TIME'] plutôt que time() pour obtenir le temps système.
  6. Voyez si vous ne pouvez pas utiliser strncasecmp, strpbrk and stripos plutôt que de recourir aux expressions régulières.
  7. preg_replace est plus rapide que str_replace str_replace est bien entendu beaucoup plus rapide que preg_replace [1], mais strtr est 4 fois plus rapide que preg_replace !
  8. L'emploi de tableaux en tant qu'arguments des fonctions de remplacements de chaînes de caractères est plus couteux que l'utilisation multiple de cette même fonction chaîne par chaîne à remplacer.
  9. La suppression de la sortie d'erreur par l'emploi du caractère @ est très coûteuse.
  10. $row['id'] est 7 fois plus rapide d'accès que $row[id].
  11. Les messages d'erreur en général sont coûteux.
  12. N'utilisez pas de fonctions à l'intérieur des boucles comme for ($x=0; $x < count($array); $x++) : ici la méthode count() est appelée à chaque itération.

Notes

[1] Le billet lié est erroné sur ce point, et je l'avais traduit tel quel. La lecture des slides de la conférence m'aura permis de réctifier le tir.

mercredi 1 novembre 2006

Installer l'accélerateur APC pour PHP5 sur Ubuntu

APC est un accélérateur PHP qui permet d'optimiser les performances de vos applications PHP. Voyons comment l'installer sur un serveur Ubuntu Dapper Drake 6.06 LTS avec Apache2 et PHP5 :

$ sudo apt-get update
$ sudo apt-get install build-essential php5-dev php-pear apache2-prefork-dev

On va utiliser l'utilitaire de gestion de modules d'Apache2, apxs2. APC va chercher par défaut la version Apache1, donc on fait un lien symbolique :

$ sudo ln -s /usr/bin/apxs2 /usr/bin/apxs

Cette installation nécessite une importante quantité de mémoire vive allouée à PHP, aussi nous allons devoir augmenter cette valeur au sein du script de commande PEAR en modifiant le fichier /usr/share/php/pearcmd.php et en y ajoutant en tête de fichier la ligne :

<?php
ini_set('memory_limit','24M');

Tout est prêt, on peut lancer l'installation d'APC via PECL :

$ sudo pecl install apc

Répondez oui à toutes les questions posées. Ceci fait et si l'installation s'est déroulée convenablement, éditez votre fichier /etc/php5/apache2/php.ini :

extension=apc.so

Il ne reste plus qu'à redémarrer Apache2 pour profiter d'une substantielle amélioration des performances de vos applications PHP5 :-)