Différentes méthodes pour compter les versions de PHP
Introduction
Il y a deux semaines Jordi Boggiano a publié un article à propos des versions de PHP utilisées par les utilisateurs de Composer. Les versions de PHP ont été collectées via le User-Agent
envoyé lors des requêtes sur Packagist.
Il y a un mois Pascal Martin a lui aussi publié un article à propos des versions de PHP. Les versions de PHP ont été collectées en effectuant une requête HEAD
sur environ 10 millions de sites et en utilisant les en-têtes Powered-By
et Server
pour connaitre la version de PHP utilisée.
Problématique
Chaque méthode présente les inconvénients suivants :
- En utilisant Composer, les machines de développement et d’intégration continue sont aussi comptabilisées, celles-ci peuvent utiliser une version de PHP différente de celle de production (dans le cas où c’est la métrique recherchée). De plus le fait d’utiliser Composer va ignorer certaines anciennes versions de PHP (toutes les versions inférieures à la version 5.3.2, non supportées par Composer).
- En utilisant les en-têtes HTTP, une partie de sites visités n’indiqueront pas si c’est PHP qui est utilisé ou la version de PHP utilisée. Cela étant une bonne pratique au niveau de la sécurité, on peux donc imaginer que des utilisations de versions plus récentes de PHP seront alors ignorées.
Les deux solutions ont publié leurs résultats indépendamment. Comme l’a indiqué Jordi, il serait intéressant de comparer les deux :
@pascal_martin si t'as envie de faire des graphs qui superimposent tes donnees et les miennes ca serait super, moi j'en ai assez pour ajd :)
— Jordi Boggiano (@seldaek) 14 Novembre 2014
Résultat
Voici donc deux graphiques représentant le pourcentage de répartition de chaque version de PHP selon chacun des méthodes de calcul :
Ici, aucune des deux méthodes n’est plus juste que l’autre, on comptabilise seulement les versions de PHP de deux façons différentes.
Comme à chaque fois dans ce genre de cas, l’on souhaite exploiter ces résultats, il faut bien avoir conscience de la méthode ayant servie à obtenir la métrique.