Revue de presse Industrialisation PHP de la semaine 25 (2010)
Cette semaine la revue de presse est assez hétéroclite et propose quelques innovations à surveiller de près.
PHP: Client side caching for all MySQL extensions
PHP 5.3 a introduit mysqlnd, un pilote natif pour PHP dont le but est de remplacer la libraire libmysql. Cela n'a pas d'incidence directe sur l'usage des extensions permettant de dialoguer avec MySQL (mysql, mysqli, PDO_MySQL) mais ce nouveau pilote apporte de nombreuses améliorations techniques et notamment la possibilité d'écrire des plugins pour interagir avec les requêtes SQL qui passent par le pilote. Un peu à la manière de MySQL Proxy. Le premier plugin tirant parti de cette possibilité vient d'arriver et il permet de faire du cache de requête du côté de PHP.
Multiple PHP versions on the same IIS server
De nombreux articles expliquent comment utiliser plusieurs versions de PHP sur la même instance d'Apache mais aucun pour IIS. C'est désormais chose faite grâce à un développeur de Microsoft. Attention cependant, si vous avez déjà installé PHP avec un installeur, il vous faudra d'abord effectuer une manipulation avant de pouvoir utiliser cette technique.
Exploring the software behind Facebook, the world’s largest site
Royal Pingdom, le blog du service de monitoring Pingdom, consacre un article à la relation entre Facebook et l'Open Source. Il aborde les charges astronomiques supportées par leur architecture ainsi que les logiciels développés ou utilisés par Facebook.
State of Symfony 2 online conference – a killer feature revealed!
Sensio Labs a dévoilé cette semaine certains aspects de la prochaine version majeure de son framework : Symfony. L'un de ces aspects est particulièrement innovant. Il s 'agit de la prise en charge des Edge Side Includes, un mécanisme de cache partiel de pages HTML développé par Akamaï et proposé au W3c pour normalisation. Nous reviendrons sur cette notion très intéressante dans un prochain article.
Revue de presse Industrialisation PHP de la semaine 20 (2010)
De par sa nature adaptative, PHP est une technologie qui est rarement isolée. Quand j'interviens chez mes clients en tant que "consultant PHP", je ne me cantonne que rarement à PHP. Les problèmes touchent la plupart du temps également la base de données, le système d'exploitation ou encore les technologies clients. Bref pour bien faire du PHP, il ne faut pas faire que du PHP.
C'est pour quoi j'ai décidé d'élargir la thématique de cette revue de presse aux domaines qui ne se rapportent pas strictement à PHP mais qui sont utiles dans le cadre de son industrialisation.
Par ailleurs, je ne vais plus seulement me limiter aux articles de blogs. Je parlerai dorénavant également d'outils.
Voici donc la première édition de cette revue de presse élargie.
asql
L'analyse des fichiers de log d'Apache est une mine d'or pour comprendre les problèmes rencontrés par une application PHP. Malheureusement, la plupart des outils qui permettent de l'analyser sont orientés statistiques de fréquentation et l'analyse manuelle de ces fichiers est fastidieuse.
Steve Kemp a eu l'idée géniale de parser un fichier de log, de le mettre en base de données et de permettre ensuite de requêter dessus. Avec asql, vous avez à disposition toute la puissance de SQL pour analyser un fichier de log Apache.
Internet Explorer Collection
Internet Explorer a pousser une génération entière de développeur à la déprime mais nous devons encore trop souvent faire avec ce navigateur. Microsoft ayant eu la brillante idée de ne permettre l'installation qu'une d'une version à la fois sur un même poste, tester facilement une application avec plusieurs versions est assez compliqué.
Des outils comme Multiple IE, IE Tester ou encore IE4Linux nous ont permis de contourner cette limitation mais le premier n'est plus maintenu tandis que les deux autres sont incomplets et encore expérimentaux. Heureusement, il existe Internet Explorer Collection qui beaucoup plus exhaustif au niveau des versions d'Internet Explorer proposées et activement maintenu.
CloudFusion
Au delà d'être le nouveau buzzword à la mode, le cloud a radicalement changé notre approche de l'hébergement et de la gestion des ressources machines. Le problème est qu'il existe de nombreux fournisseurs avec chacun leur API. CloudFusion est une librairie PHP qui règle ce problème en proposant une abstraction de ces services ce qui permet de changer de fournisseur sans trop impacter l'application. Pour le moment Amazon Web Services et Eucalyptus sont gérés.
FlockDB
Développée par Twitter pour ses besoins internes, FlockDB est une base de données distribuée de type graph. C'est à dire qu'au lieu de stocker des données selon un schéma relationnel, elle va stocker des nœuds ainsi que les liens qu'ils ont entre eux et le sens de ces derniers. Cela permet à Facebook de stocker de manière efficace les informations du type "Paul aime le statut de Pierre". FlockDB a été conçu pour être performant et facilement scalable horizontalement.
Pagetest
De nombreuses études l'ont montré : la vitesse d'affichage d'une application web impacte directement l'opinion qu'en ont ses utilisateurs. Dans le cas d'une application commerciale, cela se répercute donc directement sur le chiffre d'affaire. Il est donc primordial de vérifier les performances de l'application dans ce domaine.
Pour cela, il existe par exemple des extensions Firefox comme YSlow ou Page Speed mais celles-ci ne proposent qu'un diagnostique et des recommandations, ce qui est déjà pas mal reconnaissont le. Le site Pagetest propose en plus des fonctionnalités comme le choix du lieu d'où sera effectué le test, le navigateur utilisé, le type de connexion à internet et même la visualisation au ralenti du rendu des pages afin de mieux comprendre comme travaille le navigateur. Avec cette fonctionnalité, il est possible de comparer visuellement le rendu de plusieurs sites. C'est assez bluffant.
Top 10 Motivation Boosters and Procrastination Killers
Enfin, Lifehacker, une excellente ressource de tout et n'importe quoi soit dit en passant, propose une liste de 10 astuces pour se motiver et éviter la procrastination, un mal dont beaucoup d'entre nous souffrent.
HipHop : Une révolution pour PHP ?
La rumeur courait depuis que dimanche un employé avait laissé entendre dans une interview que Facebook travaillait sur un projet secret visant à améliorer radicalement les performances de PHP. L'annonce officielle a été faite hier par l'équipe qui travaille sur ce projet dont le nom est HipHop for PHP.
Ce projet fait suite à toute une série d'améliorations initiées ou supportées par Facebook pour améliorer les performances de PHP comme les patchs proposés pour l'extension APC.
Un fonctionnement novateur
Avant de voir comment fonctionne HipHop, faisons un rappel sur le fonctionnement de PHP. Il s'agit d'un langage de script et non un langage interprété comme Java ou compilé comme C ou C++. Cela signifie qu'à chaque exécution PHP doit analyser lexicalement puis syntaxicalement le script appelé, le transformer en OP Code, un format binaire, puis exécuter cet OP Code. La phase d'analyse du script et de création de l'OP Code peut être optimisée à l'aide d'un cache d'OP Code comme APC.
HipHop a choisi une approche radicalement différente qui consiste à transformer le script PHP en code source C++ qui sera ensuite compilé avec les outils standards de ce langage.
La transformation se fait en trois étapes :
- Analyse statique afin de déterminer qui déclare quoi et les dépendances afférentes ;
- Détermination du type C++ le plus adapté, si la variable change de type au cours de sa vie un type "variant" proche des zval du Zend Engine sera utilisé ;
- Transformation des structures PHP en code C++.
La substitution de HipHop au binaire PHP officiel vise à être transparente pour les développeurs mais bien entendu, tout cela n'est pas miraculeux et quelques contraintes existent.
Les limites
Tout d'abord, Windows n'est pas supporté et ne le sera probablement pas dans un avenir proche. Cela n'est pas un problème majeur car les serveurs de production des utilisateurs potentiels sont quasiment tous sous Unix mais cela pourrait compliquer son adoption car la majorité des postes de développement restent sous Windows.
Plus impactant, une fois compilé HipHop utilise son propre serveur web, ou son interface ligne de commande. Il est cependant possible de le coupler à Apache ou tout autre outil via un reverse proxy.
Par ailleurs, comme tout "émulation" d'un langage, HipHop ne peut être 100% compatible avec la dernière version de PHP. Il implémente aujourd'hui l'essentiel des fonctionnalités de PHP 5.2 ainsi que des extensions principales. Il faut noter que pour des raisons techniques évidentes certaines fonctions ne peuvent être supportées comme eval(), qui exécute dynamiquement du code PHP passé en argument.
L'absence d'eval() n'est pas très grave car il n'y a pratiquement aucune bonne raison d'utiliser cette fonction. En revanche, cela veut probablement dire que les assertions, qui évaluent du code à la volée pour vérifier le comportement de l'application, ne seront pas utilisables ce qui est dommage.
Quel public pour HipHop ?
Disons le clairement, en l'état actuel, HipHop n'est pas pour tout le monde. Le mode d'exécution classique de PHP a de beaux jours devant lui, notamment pour les hébergements mutualisés. La cible de HipHop est donc principalement les sites à fort et très fort trafic, à l'image de Facebook.
HipHop pourrait également être utile pour les scripts lancés en ligne de commande pour effectuer des opérations longues et récurrentes comme des imports. Ces opérations sont souvent lentes et consommatrices de CPU et de mémoire.
Révolution ou simple expérimentation ?
Il est un peu tôt pour se prononcer mais HipHop s'inscrit dans la tendance actuelle où l'on voit de plus en plus nettement se creuser un fossé entre les besoins simples des petites applications peu sollicitées, que l'on pourrait qualifier d'approche historique, et ceux beaucoup plus exigeants des applications critiques développées par des acteurs économiques de premier plan.
Le risque qu'engendre cette divergence des besoins et des moyens est une scission de la communauté PHP qui constitue l'une de ses forces. Pour le moment nous n'en sommes heureusement pas là et je doute que ce soit le but de Facebook qui une fois de plus réaffirme clairement son attachement à PHP pour sa simplicité et sa flexibilité.
Enfin, l'absence de support pour PHP 5.3 aura-t-elle un impact négatif sur l'adoption de ce dernier chez les grands comptes ?


