Aller au menu - Aller au contenu

Facebook publie Hip Hop PHP

Revenir à la liste des news
Participer à la discussion

Image

Informations

Contributeur(s) : Tchouk!
Publié : le 03/02/2010 à 17:50:05
Catégorie : Programmation
Visualisations : 37 005

Licence : Creative Commons BY SA

Facebook publie Hip Hop PHP

L'équipe de développement du site Facebook.com a publié, dans la nuit de mardi à mercredi, une nouvelle implémentation Open Source du langage PHP, baptisée Hip Hop. Conçue dans une optique d'améliorations des performances, celle-ci traduit en fait l'essentiel du code PHP en code C++, avant de le compiler à l'aide de g++.

Le souci des performances



La rumeur courait déjà depuis quelques semaines, à cause d'une interview d'un prétendu employé de Facebook. Dans l'article, l'ingénieur évoquait la sortie d'une version de PHP développée par Facebook même, visant à fournir de meilleures performances que l'implémentation de base du langage. Cependant, la présentation officielle de HipHop n'a été faite que cette semaine.

L'ingénieur responsable de HipHop, Haiping Zhao, explique ainsi que le projet est vieux de quelques années. Facebook est majoritairement écrit en PHP, mais la version du langage couramment utilisée est peu performante, ce qui force les ingénieurs à recourir à d'autres langages. Ainsi, Facebook a utilisé ou utilise encore des technologies comme Java, Python (et le serveur Tornado), Erlang (utilisé pour le chat) ou même C++. Le site participe donc à un certain nombre de projets Open Source, dont il est parfois l'initiateur, comme pour la base de données Cassandra.

Cependant, Zhao explique que 90 % du site reste écrit en PHP, car le langage permet selon lui de développer plus simplement et plus rapidement de nouvelles fonctionnalités, sans compter qu'utiliser une autre technologie implique d'écrire un code "glu" en PHP pour pouvoir l'utiliser sur le site. Dans le développement d'un projet web, les performances des pages ne sont pas un problème, du moins au début, car la principale préoccupation est la base de données.

Mais le succès de Facebook le contraint à une forte charge (environ 350 millions d'utilisateurs, soit 400 milliards de pages vues par mois), ce qui oblige les programmeurs à recourir à des techniques de mise en cache et déplace le problème du côté du code des pages lui-même. De manière générale, les sites de la génération dite du "web 2.0" sont souvent soumis à de cruciales questions de performances, et l'implémentation officielle de PHP n'a pas été pensée pour des sites subissant une charge aussi massive.

Un hyper-PHP



Les ingénieurs avaient alors plusieurs choix possibles : réécrire tout le site dans un autre langage (ce qui aurait pris du temps), ou continuer à recourir à des technologies tierces comme C++ en se contentant d'écrire un "code glu" en PHP pour faire la liaison avec ce code. La troisième possibilité, celle qui a été retenue, était de rendre PHP plus rapide, afin d'alléger la charge des serveurs tout en conservant le confort d'utilisation du langage.

D'autres projets plus anciens avaient déjà cet objectif. Par exemple, Roadsend ou PHC sont deux compilateurs qui génèrent du code C à partir d'un programme PHP, Quercus produit du code Java, etc. Mais l'équipe du projet a préféré lancer son propre compilateur, qui traduit en fait le code PHP en un code C++, en l'intégrant dans un serveur web écrit pour l'occasion.

Image utilisateur
Les étapes de la compilation
Le fait que PHP ressemble syntaxiquement à C++ permet, selon Zhao, de traduire directement une partie du code. Cependant, HipHop ne s'arrête pas là : le compilateur doit analyser les dépendances de chaque fichier afin d'optimiser les appels de fonctions ou l'utilisation de variables. De plus, C++ étant un langage statique, le type des données doit être connu à la compilation, ce qui est réalisé par inférence de types : les types des variables ne sont pas déclarés comme ils le seraient en C++, mais déduits du contexte d'utilisation, comme le font des langages comme OCaml (par opposition, PHP ne détermine le type d'une variable qu'à l'exécution d'un programme). C'est ensuite le compilateur g++ qui est appelé pour convertir le code C++ en un programme utilisable.

Naturellement, les fonctionnalités dynamiques de PHP (par exemple l'inclusion de code inconnu à la compilation, la fonction eval ou l'indirection de variables) sont incompatibles avec cette approche, mais, selon les auteurs du projet, leur utilisation n'est pas si fréquente que cela dans la majorité des sites, et l'essentiel du code de Facebook, par exemple, est compatible avec HipHop sans réécriture. Le projet est Open Source, publié sous la licence libre PHP, et accessible sur le site GitHub.

Pour l'instant, HipHop fonctionne avec PHP 5.2. Les premiers objectifs de l'équipe sont le support de la version 5.3, ainsi que de permettre d'utiliser le serveur web Apache plutôt que celui qui a été développé pour l'occasion.

Image utilisateur
La présentation au public de HipHop


Une approche efficace



Selon Haiping Zhao, HipHop PHP est à l'oeuvre depuis déjà plus de 6 mois, et a permis de réduire la charge des serveurs de 50 %, ce qui permet d'économiser en matériel. Naturellement, il n'est d'aucune utilité pour résoudre les problèmes liés à une base de données, et ne remplacera pas, au sein de Facebook, l'utilisation de langages comme C++ ou Erlang. Il a cependant fait ses preuves, et son caractère Open Source permet à d'autres sites de l'utiliser, voire de l'améliorer.

L'approche de Facebook, qui s'est contenté de fournir une nouvelle implémentation de PHP basée sur une technologie pré-existante (C++), est à comparer à celle de Google, qui conseille depuis quelques temps à ses ingénieurs de ne pas utiliser des langages de scripts comme Python, et a annoncé quelques mois plus tôt le langage Go, dont un des objectifs est de ne dépendre d'aucune autre technologie tout en étant efficace. Il ne fait aucun doute que les deux histoires apporteront beaucoup d'enseignements, car Facebook et Google ont en commun de proposer des sites web dont le nombre d'utilisateurs se compte en dizaines de millions.

Liens divers


153 Participations

Pour accéder à cette section
Connectez-vous !
connexion_rpx
Page 1  2  3  4  5  6  Suivante
Pseudo Discussion
1 visiteur sur cette news (0 membre et 1 Anonyme)
Page 1  2  3  4  5  6  Suivante
Hors ligne Nelty # Posté le 03/02/2010 à 17:58:10
Garfield in the US
Avatar
Groupe : Anciens
Flux RSS

Ville : Owatonna
Pays : États-Unis

Cette news parle de Facebook.


Mais pas seulement ! Si vous prenez le temps de la lire un peu, vous vous rendrez compte qu'on peut parfaitement y lire autre chose. En fait, elle parle de PHP, de partage de technologies, de progrès, etc.

Merci, donc, de vous montrer constructif dans vos commentaires. Par exemple, les messages de la forme de "facebook = big-brother" sont à proscrire :) .

Vous êtes avertis.
 
Hors ligne RyDroid # Posté le 03/02/2010 à 18:03:37
rayquaza devient RyDroid
Avatar

Ville : Reims
Pays : France métropolitaine

Bonne news.

Mathéo avait pas dit que le C++, c'était pas super pour un site ?
Ou seulement pour des cas particuliers ?

Nous avons eu la gentillesse de vous répondre, ayez la gentillesse de mettre votre topic en Image utilisateur résolu !
 
Hors ligne Ferrari_4000 # Posté le 03/02/2010 à 18:03:39
Avatar
Flux RSS

Ville : Bourg-la-reine
Pays : France métropolitaine
Études : Lycée Lakanal - Sceaux

Je ne vois pas l'intérêt de leur hiphop PHP ... c'est en fait un PHP "allégé" ? et je ne vois pas comment cela réduirais la charge des serveurs ...

Image utilisateur
Image utilisateur
Image utilisateur
Image utilisateur
 
Hors ligne CLog # Posté le 03/02/2010 à 18:04:10 Commentaire supprimé pour le motif suivant : Message complètement hors sujet.
Hors ligne mathieu.e # Posté le 03/02/2010 à 18:05:35

Études : ISEN Brest-Rennes

Génial, merci facebook pour le projet. Connaissant la consommation des serveurs web, peut-être que ce projet pourra nous faire faire quelques économies. La planète dit merci :)
 
Hors ligne PIERRESERGE # Posté le 03/02/2010 à 18:06:21 Commentaire supprimé pour le motif suivant : Aucune formule de politesse de base.
Hors ligne Serialtueur # Posté le 03/02/2010 à 18:06:50
\_o< ~ Koin ?
Avatar
Groupe : Bannis

Ville : Marseille
Pays : France métropolitaine

On en avait parlé sur IRC, bonne news :)

Des statistiques pour votre site ! | Le protocole HTTP avec QtNetwork
Le nolife, c'est le pendant obscur du geek, la tare de réputation dont il n'arrive pas à se débarrasser. -- ordiclic
IRC : #kamoulbox@irc.freenode.net
 
Hors ligne anonyme # Posté le 03/02/2010 à 18:06:52

Hum vraiment intéressant ce nouvel outil. A mon avis, si tout le monde s'en servait on pourrait économiser beaucoup de puissance et surtout acroître la capacité de charge des serveurs de beaucoup de sites. Pourquoi pas un SdZ remake Cpp ?

Cependant, qu'adviendrat-il de PHP si HipHop est utilisé partout ? Si HipHop devient de plus en plus usité, peut-être que Zend voudra rendre PHP plus "HipHop compliant" :p

Sinon: Cpp pour un site ou ce que tu veux, c'est toujours plus rapide qu'un langage de script qu'on interprète. Mais l'avantage de HipHop est d'écrire du code PHP et de garder son aspect "couteau suisse du web" puis le traduire en Cpp. Donc on garde la productivité PHP mais on ajoute la puissance d'un langage compilé.
Hors ligne MrKooky # Posté le 03/02/2010 à 18:07:03 Commentaire supprimé pour le motif suivant : Message complètement hors sujet.
Hors ligne Poniwes # Posté le 03/02/2010 à 18:07:41 Commentaire supprimé pour le motif suivant : Message complètement hors sujet.
Hors ligne ColasV # Posté le 03/02/2010 à 18:09:30
C Plus Plus fort que toi.
Avatar
Flux RSS

Ville : Montesson
Pays : France métropolitaine
Études : Lycée Jeanne d'Albret - Saint-Germain-en-Laye

Très intéressant comme news, cela fait maintenant quelques jours que des informations circulaient sur la toile mais la news permet de bien expliquer le principe et l'utilité d'un tel projet ;)

#LGDF: zingwai vaincra !
#LGDF: Josh-Rey vaincra !
Image utilisateur

>> Mon Twitter : Twitter ColasV
>> Projet en cours : Tutoriel Mac OS X
>> Mes tutoriels : Adium, Mac OS X Lion
>> Mon blog : Lien

 
Hors ligne LoupSolitaire # Posté le 03/02/2010 à 18:09:35
Connard patenté
Avatar

Citation : Ferrari_4000
Je ne vois pas l'intérêt de leur hiphop PHP ... c'est en fait un PHP "allégé" ? et je ne vois pas comment cela réduirais la charge des serveurs ...

C'est un PHP normal, mais traduit en C++, puis compilé. le code natif ayant tendance à être plus performant que le code interprété, c'est plus rapide.
Hors ligne RyDroid # Posté le 03/02/2010 à 18:10:14
rayquaza devient RyDroid
Avatar

Ville : Reims
Pays : France métropolitaine

On peut déja faire des programmes PHP et les compiler, non ?

Nous avons eu la gentillesse de vous répondre, ayez la gentillesse de mettre votre topic en Image utilisateur résolu !
 
Hors ligne anonyme # Posté le 03/02/2010 à 18:10:29

Citation : Nelty
Cette news parle de Facebook.


Mais pas seulement ! Si vous prenez le temps de la lire un peu, vous vous rendrez compte qu'on peut parfaitement y lire autre chose. En fait, elle parle de PHP, de partage de technologies, de progrès, etc.

Merci, donc, de vous montrer constructif dans vos commentaires. Par exemple, les messages de la forme de "facebook = big-brother" sont à proscrire :) .

Vous êtes avertis.


Pour le moment j'estime qu'il n'y a eu que 2 commentaires vraiment intéressants (je ne parle pas du mien, à vous de juger).
Je suis pas un modo mais les autres franchement... arrêtez de poster pour poster.
Hors ligne titanshift # Posté le 03/02/2010 à 18:11:50 Commentaire supprimé pour le motif suivant : Message complètement hors sujet.
Hors ligne Sergeswi # Posté le 03/02/2010 à 18:19:11
Fan obligé de zingwai.
Avatar

Honnêtement, j'ai décroché dès la partie hyper-PHP. News trop technique à mon goût.

Icône Les calculs en binaire
Secret (cliquez pour afficher)
Se tutarielle à èté zcaurigeai
 
Hors ligne PainKetchup # Posté le 03/02/2010 à 18:22:42
Diversification !
Avatar
Validateurs

Bof, pas si technique que ça si on s'y connais un minimum. Disons qu'elle ne vise qu'une partie des membres du SdZ...

Bonne news sinon.

Aimez-vous Erlang ? Ou bien Haskell ? Sinon, vous trouverez sûrement votre bonheur ici.
Exemple pragmatique de Programmation Fonctionnelle.

 
Hors ligne anonyme # Posté le 03/02/2010 à 18:23:23

Le typage statique c'est que chaque variable a un type définit dès sa déclaration comme en C, C++ et j'en passe. Genre int, char ou long, ou encore short, double float ect... alors que PHP tu fais $var = "bonjour" et PHP définit $var comme étant une chaine de caractère, en gros.
Hors ligne Tchouk! # Posté le 03/02/2010 à 18:23:31
Avatar
Groupe : Bannis
Flux RSS

Sergeswi> Ah ? Moi je trouve que ça devient trop rare. J'ai pourtant le sentiment d'avoir fait des efforts pour être assez clair. Mais si tu as le temps de me dire par MP ce que tu as trouvé incompréhensible, j'essaierai d'en tenir compte à l'avenir.

(Ça vaut pour d'autres gens qui n'auraient éventuellement pas compris non plus).

NeXTSTEP, l'ancêtre de Mac OS X — en 1993.
Image utilisateur
Si vous avez des couilles et que vous aimez
la programmation sans chichis, venez sur PM !
 
Hors ligne cfillion # Posté le 03/02/2010 à 18:24:05 Commentaire supprimé pour le motif suivant : Message complètement hors sujet.
Hors ligne O.G.R.E. # Posté le 03/02/2010 à 18:24:17
Il faut pomper pour vivre !
Avatar

Ville : Wasquehal
Pays : France métropolitaine
Études : TELECOM Lille1

Citation : Schtroumpfette
Citation : Nelty
Cette news parle de Facebook.


[...]
Vous êtes avertis.


Pour le moment j'estime qu'il n'y a eu que 2 commentaires vraiment intéressants (je ne parle pas du mien, à vous de juger).
Je suis pas un modo mais les autres franchement... arrêtez de poster pour poster.

Bah quoi, on est sur le site du zéro ici. Y'en a qui comprennent pas tout, ils posent des questions, d'autres répondent. D'autre sont content de voir une news de bonne qualité, ils ont le droit de le dire.

Sinon, news intéressante, même si c'est pas vraiment mon domaine. C'est vrai qu'il est difficile d'imaginer la taille de la base de donnée d'un tel site !!

Image utilisateur
Tous résolus en c++
 
Hors ligne Sergeswi # Posté le 03/02/2010 à 18:25:17
Fan obligé de zingwai.
Avatar

Citation : Tchouk!
Sergeswi> Ah ? Moi je trouve que ça devient trop rare. J'ai pourtant le sentiment d'avoir fait des efforts pour être assez clair. Mais si tu as le temps de me dire par MP ce que tu as trouvé incompréhensible, j'essaierai d'en tenir compte à l'avenir.

(Ça vaut pour d'autres gens qui n'auraient éventuellement pas compris non plus).


C'est peut-être moi ... mais c'est ce passage-là que j'ai complètement zappé :

Citation : News
Le fait que PHP ressemble syntaxiquement à C++ permet, selon Zhao, de traduire directement une partie du code. Cependant, HipHop ne s'arrête pas là : le compilateur doit analyser les dépendances de chaque fichier afin d'optimiser les appels de fonctions ou l'utilisation de variables. De plus, C++ étant un langage statique, le type des données doit être connu à la compilation, ce qui est réalisé par inférence de types : les types des variables ne sont pas déclarés comme ils le seraient en C++, mais déduits du contexte d'utilisation, comme le font des langages comme OCaml (par opposition, PHP ne détermine le type d'une variable qu'à l'exécution d'un programme). C'est ensuite le compilateur g++ qui est appelé pour convertir le code C++ en un programme utilisable.

Naturellement, les fonctionnalités dynamiques de PHP (par exemple l'inclusion de code inconnu à la compilation, la fonction eval ou l'indirection de variables)


Sinon je critique pas le reste ... juste ça.

Icône Les calculs en binaire
Secret (cliquez pour afficher)
Se tutarielle à èté zcaurigeai
 
Hors ligne Tchouk! # Posté le 03/02/2010 à 18:25:58
Avatar
Groupe : Bannis
Flux RSS

O.G.R.E> Si Nelty a mis un avertissement, c'est pas pour que vous en discutiez dans les commentaires non plus hein.

Sergeswi> Hmm, d'accord. J'avoue que ça peut être décourageant.

NeXTSTEP, l'ancêtre de Mac OS X — en 1993.
Image utilisateur
Si vous avez des couilles et que vous aimez
la programmation sans chichis, venez sur PM !
 
Hors ligne Trashjedi # Posté le 03/02/2010 à 18:26:21
Avatar

Ville : Fontaine
Pays : France métropolitaine
Études : UJF Grenoble

Citation : Sergeswi
Honnêtement, j'ai décroché dès la partie hyper-PHP. News trop technique à mon goût.

Il faut connaître PHP ou d'autres langages de prog un minimum pour comprendre. :)

Intéressant en tout cas. On doit constamment adapter les technologies existantes ou en créer de nouvelles pour nos nouveaux "besoins" (si on peut dire que FB en est un ^^ )

Image utilisateur Image utilisateur
 
Hors ligne Kurapix # Posté le 03/02/2010 à 18:27:55
Avatar

Sympa :) .

300 000 lignes de code en 18 mois, énorme Oo .

Image utilisateur
Rejet de la loi HADOPI

;) La puissance n'est rien sans maîtrise.
-----------------------------------------------------------------------
[GCC] Re-arrangement de la pile
[Bash] Script d'installation de C::B a partir des sources.
[ASM][ARM][GBA] Procédure hline : tracé d'une ligne horizontale
srand(), rand() ... gné?

-----------------------------------------------------------------------

To follow the path:
look to the master,
follow the master,
walk with the master,
see through the master,
become the master.
 
Hors ligne Triviak # Posté le 03/02/2010 à 18:28:05
vous aime !
Avatar

Très intéressant ! J'avais déjà vu quelques choses comme ça il y a peu de temps. Ce serait intéressant de voir si d'autres sites vont utiliser ces techniques.

Image utilisateur Image utilisateur Image utilisateur Image utilisateur Image utilisateur
Image utilisateur
 
Hors ligne ProgVal # Posté le 03/02/2010 à 18:28:31
Catapoulpe !
Avatar

Ville : Jouy aux arches
Pays : France métropolitaine
Études : Lycée Fabert - Metz

J'en avais un peu entendu parlé, et j'étais sur le point de commencer la rédaction d'une news quand j'ai vu celle-ci :p

Belle news.

Sait-on quand HipHop sera téléchargeable, et en quel langage il est codé ?


PS : quand on tape "HipHop PHP" sur Google, on tombe direct sur cette news (1er et 3ème liens), à peine 30 minutes après sa publication...

Image utilisateur
 
Hors ligne Ferrari_4000 # Posté le 03/02/2010 à 18:28:44
Avatar
Flux RSS

Ville : Bourg-la-reine
Pays : France métropolitaine
Études : Lycée Lakanal - Sceaux

Citation : LoupSolitaire
Citation : Ferrari_4000
Je ne vois pas l'intérêt de leur hiphop PHP ... c'est en fait un PHP "allégé" ? et je ne vois pas comment cela réduirais la charge des serveurs ...

C'est un PHP normal, mais traduit en C++, puis compilé. le code natif ayant tendance à être plus performant que le code interprété, c'est plus rapide.


Ok, merci ! Je comprend mieux !

Image utilisateur
Image utilisateur
Image utilisateur
Image utilisateur
 
Hors ligne gnomnain # Posté le 03/02/2010 à 18:29:57
Blblbl !
Avatar
Groupe : Anciens

Ça me fait penser aux interpréteurs javascript modernes (à la V8 de Google Chrome). Mais le système est différent, puisqu'ici au lieu de déterminer les types en traçant l'exécution, on essaye d'en déterminer le maximum à la compilation. Ce système devrait donc aussi pouvoir trouver certaines erreurs de types à la compilation.
Mais sinon, je trouve dommage que leur approche interdise d'utiliser certaines fonctionalités dynamiques de PHP (à part si ils parlent des includes, là je suis d'accord avec eux) : le typage dynamique a certains avantages, et surtout il faut parfois modifier les scripts pour qu'ils utilisent des types bien déterminés.

Image utilisateur
Haskell - Learn You a Haskell - Real World Haskell - xmonad - OCaml
Apprenez Haskell ! - #ircduzero
<colbseton> Serialk: tu cherches vraiment des liens logiques dans tout ce que je raconte ?
 
Hors ligne pictoboy # Posté le 03/02/2010 à 18:30:48 Commentaire supprimé pour le motif suivant : Message complètement hors sujet.
Pour accéder à cette section
Connectez-vous !
connexion_rpx

Revenir à la liste des news