PHP 5.3 : Améliorations et corrections diverses

20 novembre 2008php, php-5.3
 Cet article a été rédigé il y a plusieurs années et peut ne plus être tout à fait à jour…

Cette série d'articles commence petit à petit à se rapprocher de sa fin : à peu de choses près, dans une semaine, je devrais être en train de publier mon article dores et déjà intitulé "Conclusion"...

Voici donc venu le temps de dresser, << en vrac >>, une liste d'améliorations que je considère soit comme mineures, soit pour lesquelles je n'ai pas de démonstration à effectuer, ni d'exemples à présenter -- quoi qu'il en soit, des nouveautés pour lesquelles je n'ai pas jugé nécessaire de rédiger d'articles entiers.

Sommaire :


Améliorations orientées performances

De nombreuses améliorations ont été apportées au moteur de PHP, permettant un gain de performances pouvant aller jusqu'à une quinzaine de pourcents pour certaines applications.

En vrac

Aux rangs des améliorations ayant un impact sur les performances :

  • Déplacement des constantes vers des zones mémoire en lecture-seule
  • Amélioration des gestionnaires d'exceptions : il est maintenant plus simple, et tient sur moins de code -- ce qui facilitera certainement la maintenance.
  • Suppression d'appels système à << open >> pour les inclusions de fichiers via require_once et include_once, résultant en une amélioration de la rapidité de ces deux directives.
  • Utilisation de gcc4 pour la compilation.

A titre d'exemple, la fonction md5 est devenue 10 à 15 % plus rapide que dans les versions précédentes.

Des benchmarks effectués en mars avaient montré les améliorations suivantes, pour quelques applications connues :

  • Drupal : 20% plus rapide
  • Qdig : 2% plus rapide
  • typo3 : 30% plus rapide
  • wordpress : 15% plus rapide
  • xoops : 10% plus rapide

Source : http://news.php.net/php.internals/36484


Benchmarks de plusieurs versions de PHP

Pour un benchmark de plusieurs versions de PHP, je vous invite à jeter un œil sur les graphiques obtenus par Sebastian Bergmann lorsqu'il a benchmarké des versions de PHP allant de la 3.0 à la 5.3 : Benchmark of PHP Branches 3.0 through 5.3-CVS

Par curiosité, j'ai lancé le script utilisé par Sebastian, sur les versions de PHP que j'avais sous la main, sur une vraie machine (pour ne pas être limité par les capacités d'une machine virtuelle) -- en ayant désactivé Xdebug, bien entendu.

Voici les temps que j'ai obtenu, en secondes :

  • PHP 4.4.9 (dernière version de PHP 4) : 18.072
  • PHP 5.1.6 (dernière version de PHP 5.1) : 7.313
  • PHP 5.2.6 (dernière version stable de PHP 5.2 -- au jour d'aujourd'hui) : 7.769
  • PHP 5.3.0 (version compilée il y a quelques jours) : 5.525
  • PHP 6.0.0, par curiosité (même chose) : 6.166

A noter : ces 5 versions de PHP ont toutes été compilées << à la main >> par mes soins, en utilisant quasiment les mêmes options lors du configure, de manière à être les plus proches possibles les unes des autres -- ce qui devrait limiter l'éventuel impact d'extensions qui auraient pu être activées sur une version et pas sur une autre.

Pour les plus << visuels >> d'entre vous, voici ce que ça donne sous forme graphique :

benchmark-1.png

On retombe sur ce que je disais juste au-dessus : PHP 5.3 est légèrement plus rapide que PHP 5.2 -- et ce même si un lot de nouveautés ont fait leur apparition ;-)

(Et il faut vraiment que je m'installe une version de PHP 5.0, rien que pour le fun ^^ )


Mise à jour du support SQLite3

Le support de la base de données SQLite3 a été mis à jour ; il est maintenant disponible en version 3.6.5 :

sqlite3-phpinfo.png


Corrections de bugs

La sortie de PHP 5.3 s'accompagne, en toute logique, de la correction d'un grand nombre de bugs -- et une partie de ces corrections se retrouve dans la version 5.2.7, actuellement disponible en troisième Release Candidate.

Rien que ça, d'un côté, ça pourrait être une raison pour monter en version... Encore que si votre objectif est de voir un bug disparaitre, je conseillerais plutôt de passer à PHP 5.2.7, pour ne pas risquer de tomber sur un des cas où une des nouvelles fonctionnalités de PHP 5.3 pourrait causer tord à votre application...


Améliorations diverses

Pour terminer, encore quelques points :

  • CGI / FastCGI ont reçu quelques soins
  • Diverses améliorations ont été apportées sur les streams.
  • Ajout de la fonction str_getcsv, pour lire des données au format CSV depuis une chaine de caractères.


Vous en avez d'autres ?

Vous avez repéré d'autres améliorations, que je n'ai pas cité ici, et qui ne sont pas présentes au sommaire de cette série d'articles, en particulier pour les prochains jours ?

N'hésitez pas en faire part en commentaire !
Merci d'avance ;-)