Le nouveau projet Open Source pour PHP du moment, c’est bien HipHop, développé pour PHP, qui consiste à transformer le code PHP en C++ puis de le compiler en utilisant g++. Présenté dans l’article précédent Facebook & PHP II: HipHop et HPHPi, voici de nouvelles informations, issues de la conférence de cette nuit.
Facebook qui utilise déjà HipHop sur 90% de ses serveurs a constaté:
- Sur les serveurs Web: 50% de consommation CPU en moins pour un même trafic, par rapport à PHP 5.2 avec APC
- Sur les serveurs API: 30% de consommation CPU en moins pour deux fois plus de trafic
HipHop transforme le code en C++ et le compile avec g++ mais l’utilisateur n’a pas besoin de compiler à la main son code PHP avec un outils, tout reste comme avant, avec l’édition de fichiers PHP à la volée.
Néanmoins, les fonctionnalités qui ne seront pas disponibles:
- La fonction
eval - La fonction
create_function, qui est du même acabit queeval - La fonction
preg_replace, avec le paramètree, qui permet l’application deevalsur le résultat - De manière plus générale, l’ordre des objets ne peu pas être respecté, du fait d’une exécution non-linéaire du code. Ainsi, la fonction
function_existsretourne la valeur vraie dans ce code:if (function_exists('foo')) { // Vrai avec HipHop // Faux avec PHP } function foo () {} ?>
En plus de HipHop, l’équipe de Facebook a développé HPHPi, c’est un interpréteur PHP, il semblerait que ça soit grâce à lui qu’il ne sera pas nécessaire de compiler le code PHP. Il fait aussi des analyses du code pour y détecter des éventuelles erreurs dues à l’utilisation de HipHop et non de PHP.
HipHop embarque son propre serveur Web et n’est pas le moment pas compatible/prêt à fonctionner avec Apache ou un autre serveur. C’est pourquoi HipHop c’est un seul processus, contrairement à PHP mais qui utilise le principe de multi-thread, plus rapide que le multi-processus car créer un processus, c’est assez long par rapport aux threads. Comme HipHop utilise sont propre Web serveur allégé, il est plus rapide et permet de mieux gérer les ressources partagées entre les threads, il permet aussi de ne pas avoir de downtime, c’est-à-dire de temps d’inaccessibilité lors d’un redémarrage de HipHop.
HipHop est pour le moment basé sur PHP 5.2, et l’équipe de chez Facebook compte bien avancer encore plus sur ce projet et voici leur Roadmap, ou liste de choses à faire:
- Apport des fonctionnalités de PHP 5.3
- Utilisation possible avec Apache
- …et plus généralement la réduction de l’écart entre HipHop et PHP
Le code source qui était sensé être mis en ligne cette nuit sera maintenant mis en ligne “soon” !