Installer PHP7 pour tester une application

Retour aux articles Dans #blog le 10/12/2015 par Emmanuel BALLERY

Installer PHP7 pour tester une application

Vous ne l'aurez pas raté, PHP 7 est là ! Parmi les importantes améliorations du langage, il en est une qui ne cesse d'accompagner chaque nouvelle évolution: "Improved performance: PHP 7 is up to twice as fast as PHP 5.6". Vous trouverez la liste des évolutions ici:

http://php.net/archive/2015.php#id2015-12-03-1

Cette nouvelle version est basée sur PHPNG (PHP Next-Generation), une initiative lancée par Zend en réponse à la technologie HHVM de Facebook. Elle est bien plus rapide grâce notamment à une optimisation de l'usage de la mémoire en C. Quelques questions demeurent. Y-a-t il des BC ? Est-ce vraiment plus rapide ?

Installer PHP7

Sur une machine virtuelle vierge, sous Ubuntu 15.10, je n'ai pas eu grand chose à faire :

C'est assez rapide, et le résultat est le suivant :

Tester une application existante

Pour tester la performance, sans pousser le vice au delà de mes propres limites, j'éxécute les tests d'un projet que j'ai en cours et qui tournent déjà sur ma machine.

Avec PHP 5.5.9

J'ai désactivé les modes PHP que je n'ai pas installé avec PHP7, notamment xdebug.

Avec PHP 7.0.0

En complément de cette installation et afin de tester une de mes applications, j'ai aussi installé le paquet apt-get install php7.0-sqlite3.

En résumé

  PHP 5.5.9 PHP 7.0.0
Temps (fixtures + cache + tests) 27.97s 12.94s
Temps (PHPUnit) 19.83 seconds 09.37 seconds
Mémoire (PHPUnit) 74.25Mb 46.00Mb

En terme de compatibilité

Rien à dire: je n'ai pas changé une seule ligne de code dans mon projet. J'ai juste eu un petit warning, et j'était fautif. Concidérant l'implémentation suivante :

La signature de la méthode est différente alors que B hérite de A, ce build de PHP7 indique donc:

PHP Warning: Declaration of B::test($b) should be compatible with A::test(array $a)

Avec XDebug

XDebug propose déjà une version compatible avec PHP 7. Pour l'occasion, j'active le code coverage lors des tests.

Avec PHP 5.5.9

Avec PHP 7.0.0

En résumé

  PHP 5.5.9 PHP 7.0.0
Temps (fixtures + cache + tests) 11m52.284s 5m25.713s
Temps (PHPUnit) 11.61 minutes 5.23 minutes
Mémoire (PHPUnit) 106.25Mb 68.00Mb

Retour aux articles