ou INSCRIVEZ-VOUS Mot de passe oublié ?
Publicité

Facebook fait profiter la communauté open source de ses travaux sur le PHP

Le PHP façon Facebook

Lorsque l’on parle de Facebook, on aborde plus régulièrement ses nouveautés, les modifications de son interface et les questionnements sur la vie privée que ses bases techniques. Il en est pourtant question actuellement car les développeurs de Facebook ont réalisé d’importants travaux autour du langage PHP et les résultats en sont basculés dans la communauté open source.

Facebook I Love Money

Dépasser les limitations du PHP

Les problèmes de Facebook résident essentiellement dans les performances. Le PHP est un langage de script qui permet de développer facilement et rapidement un site. Mais Facebook ne peut plus être considéré comme un simple site. Des millions et des millions de pages différentes, toutes créées en PHP, alors que le langage n’a pas été conçu pour une utilisation aussi intensive. La firme cherchait donc évidemment des solutions à ces problèmes de performances.

Le site Ars Technica retrace un historique intéressant des étapes qui ont mené du problème de départ vers la solution actuelle. Tout d’abord, les développeurs de Facebook ont travaillé avec le Zend Engine, Zend Technologies étant la société à l’origine du PHP. Le but à cette époque était de basculer une partie de la charge vers des extensions rédigées en C++, ce dernier permettant des performances nettement supérieures. Le 2 février 2010 toutefois, un ingénieur de Facebook, Haiping Zhao, précisait dans un billet que cela provoquait une division des équipes de développement. Problème : une partie des ressources devait être consacrée du même coup au Zend Engine pour le maîtriser pleinement.

Peu après, les ingénieurs partaient dans une direction différente. En gardant comme objectif la production de code C++ depuis du script PHP, ils ont cherché à cartographier le code. Le but ? Analyser facilement ce code et le traduire en C++ optimisé. Pour y parvenir, ils ont créé un nouvel interpréteur baptisé HPHP, pour HipHop. Son rôle était justement la cartographie du code via la production d’un arbre syntaxique abstrait (AST). Comme l'explique Ars Technica, l’un des avantages immédiats du code obtenu était que les développeurs pouvaient y intégrer certains services déjà écrits en C++. Nous avions d'ailleurs abordé HipHop dans nos colonnes pour souligner les gains apportés.

HipHop : de l'interpréteur à la machine virtuelle

Dans la pratique, l’apparition de l’interpréteur HipHop a permis de doubler les performances du code de Facebook. Toutefois, tout n’était pas rose. Comme nous l’indiquions dans notre actualité du 3 février 2010, la traduction du code pouvait sacrifier au cours du processus des fonctions « rarement utilisées » telles que eval(). La raison en est que HipHop reprend la majorité des fonctionnalités de PHP 5.3, mais pas tout, ce qui a créé une nouvelle catégorie de problèmes.

Comme le souligne Ars Technica, la rédaction d’un code PHP en vue de son interprétation par HipHop pose le souci de son débogage. Les outils existants pour ce processus en PHP ne sont pas adaptés au cas HipHop car ils ne sont pas capables de pointer les erreurs potentielles. Les développeurs ont donc créé leur propre interpréteur PHP, baptisé HPHPi, pour deviner plus finement comment le code PHP peut réagir une fois traduit en C++ et compilé. Deux problèmes essentiels sont pourtant apparus :
  • HPHPi travaille à peu près deux fois plus lentement que l’interpréteur PHP classique
  • Certaines différences vis-à-vis du générateur C++ pouvaient provoquer des écarts entre les situations de tests et réelles
La solution à tous ces problèmes se nomme finalement HHVM, pour HipHop Virtual Machine. En entrée, la HHVM reprend l’arbre syntaxique abstrait, mais le résultat en sortie est très différent. La machine virtuelle génère un bytecode, autrement dit un code intermédiaire, lui-même avalé ensuite par un moteur qui l’exécute.

Dans un billet de l’ingénieur Jason Evans, on apprend ainsi que la HHVM est à l’heure actuelle 60 % plus rapide que l’interpréteur HPHPi. Mais le travail n’est pas terminé : Facebook estime que la machine virtuelle n’est terminée qu’à 90 %. Cela n’empêche pas la firme de basculer tous ses développement vers la HHVM, avec l’objectif très clair d’y faire passer tout l’environnement de production à terme.

De fait, comme Facebook l’avait fait il y aura bientôt deux ans, le code source de la HHVM a été publié sur GitHub, sous licence PHP et Zend. Notez pour les intéressés qu’il ne s’agit en rien d’une version finale et que ce code sera régulièrement mis à jour au fur et à mesure que les développeurs s’avanceront vers une mouture complète.
le 14 décembre 2011 à 16:56 (19 848 lectures)