Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Une évaluation en une semaine

Rien de ce que j’ai Ă©crit ne devrait dĂ©cider Ă  votre place. La raison de votre dĂ©cision devrait ĂȘtre une mesure faite sur votre propre charge de travail, et il ne faut pas longtemps pour en faire une. Cinq jours ouvrĂ©s suffisent pour installer le langage, le lire, l’exĂ©cuter sous charge, construire une tranche de votre produit, et vĂ©rifier par vous-mĂȘme l’écosystĂšme et la gouvernance. Il vous faut un ordinateur portable, une petite machine virtuelle et personne d’autre, et ce que vous tenez Ă  la fin, c’est une page de chiffres que personne ne vous a tendue.

Jour un : le langage

Installez PHP 8.5 depuis votre gestionnaire de paquets ou lancez l’image officielle, php:8.5-cli. Collez le premier exemple du chapitre Le langage en 2026 dans un fichier, exĂ©cutez-le, puis cassez-le comme ce chapitre le suggĂšre et lisez chaque message d’erreur. Clonez un projet PHP open source d’une taille qui vous parle et lancez sa suite de tests. Passez ensuite un analyseur statique, PHPStan ou Psalm, Ă  son niveau le plus strict, et lisez les vingt premiers rĂ©sultats :

composer require --dev phpstan/phpstan
vendor/bin/phpstan analyse --level=max src

composer require --dev vimeo/psalm
vendor/bin/psalm --init src 1 && vendor/bin/psalm

Ce que l’analyseur attrape et que le moteur laisse passer, c’est la rĂ©ponse pratique Ă  la question des gĂ©nĂ©riques. Notez le temps qu’il vous a fallu pour lire la base de code, et si les rĂ©sultats Ă©taient des choses que vous auriez voulu voir attrapĂ©es.

Jour deux : le runtime

Sur la machine virtuelle, installez PHP-FPM avec nginx, activez OPcache et servez un script hello-world. Servez ensuite le mĂȘme script sous FrankenPHP en mode worker, et chargez les deux avec le mĂȘme outil, Ă  la mĂȘme concurrence :

wrk -t4 -c64 -d30s --latency http://127.0.0.1/

Notez pour chaque exĂ©cution les requĂȘtes par seconde, la latence mĂ©diane, le 99e centile et la mĂ©moire par worker, lue sur la page de statut de FPM ou dans ps. Remplacez ensuite le hello-world par le squelette d’un framework full-stack, n’importe lequel parmi CakePHP, Laminas, Laravel, Symfony ou Yii, et recommencez. Le rapport entre les quatre exĂ©cutions est le coĂ»t du runtime pour votre future application sur votre matĂ©riel, le chiffre que DĂ©bit et latence ne pouvait vous donner que pour le matĂ©riel de quelqu’un d’autre.

Jour trois : une tranche du produit

Choisissez la fonctionnalitĂ© de votre produit qui le reprĂ©sente le mieux : un endpoint authentifiĂ© qui lit et Ă©crit une base de donnĂ©es, rend ou sĂ©rialise quelque chose, et envoie un message dans une file. Construisez-la dans le framework choisi le deuxiĂšme jour, avec des tests, en n’utilisant que ce que le framework et Packagist fournissent, et n’optimisez pas. Notez le temps que cela a pris, la part que vous avez Ă©crite et la part que vous avez configurĂ©e, le nombre de paquets tirĂ©s, et ce que composer audit en a dit.

Une bande de cinq cases identiques dessinées sur un mur comme un planning hebdomadaire. Un éléphant debout sur un petit tabouret coche la troisiÚme case avec un stylo ; les deux premiÚres portent une coche, les deux derniÚres sont vides. Un ordinateur portable et un petit serveur sont posés au sol sous la bande

Jour quatre : la tranche sous charge

Chargez la tranche du troisiĂšme jour comme vous avez chargĂ© le hello-world, Ă  la concurrence que vous attendez en production, puis Ă  dix fois cette valeur. Profilez une requĂȘte lente avec le profileur de Xdebug ou avec hrtime() autour des appels suspects, et regardez oĂč passe le temps ; sur la plupart des tranches, il passe dans la base de donnĂ©es, et le langage n’est qu’une mince part Ă  chaque bout. Notez le dĂ©bit et le 99e centile aux deux concurrences, et la part d’une requĂȘte passĂ©e hors de PHP.

Faites ensuite la seule chose que les benchmarks ne font jamais. Tuez un worker en pleine requĂȘte, saturez la limite de mĂ©moire, levez une exception non attrapĂ©e dans un job de file d’attente, et notez ce que l’utilisateur a vu, ce que les journaux ont dit, et ce qui s’est rĂ©tabli tout seul.

Jour cinq : l’écosystĂšme et la gouvernance

Cherchez sur Packagist les trois bibliothĂšques dont votre produit ne peut se passer, et notez pour chacune la date de sa derniĂšre version et son nombre de tickets ouverts. Ouvrez wiki.php.net/rfc et lisez la RFC en cours de vote, puis le fil internals qui la porte. Ouvrez la page des versions maintenues de php.net et notez la date Ă  laquelle la version que vous avez choisie cesse de recevoir des correctifs de sĂ©curitĂ©. Ouvrez la page Open Collective de la fondation et lisez le dernier mois de transactions, puis les trois avis de sĂ©curitĂ© les plus rĂ©cents de php-src, avec leur dĂ©lai entre signalement et correctif. Tout cela tient dans un aprĂšs-midi, et c’est la matiĂšre premiĂšre que Gouvernance et pĂ©rennitĂ© a rĂ©sumĂ©e pour vous.

La décision

La semaine a produit des chiffres, et une décision demande des pondérations que vous seul pouvez fixer. Chaque question ci-dessous a ses preuves publiques dans un chapitre et votre propre réponse dans un jour de la semaine.

QuestionPreuves publiquesVotre résultat de la semaine
Aurai-je envie de lire et d’écrire ce langage pendant des annĂ©es ?Le langage en 2026Jour un
Le débit du runtime suffit-il à mon trafic, sur mon matériel ?Débit et latenceJour deux, jour quatre
Ma charge de travail tient-elle dans le modĂšle par requĂȘte, ou maintient-elle des connexions, ou consomme-t-elle du CPU ?Le runtime, Concurrence, LĂ  oĂč PHP est le mauvais choixJour quatre
Les bibliothĂšques dont j’ai besoin existent-elles, et sont-elles maintenues ?L’écosystĂšmeJour trois, jour cinq
Qui maintient le langage, et jusqu’à quand ma version est-elle prise en charge ?Gouvernance et pĂ©rennitĂ©Jour cinq
Puis-je recruter pour lui, l’hĂ©berger, et me payer la mise Ă  niveau annuelle ?CoĂ»t de possessionVos sites d’offres d’emploi, votre Ă©quipe plateforme
Tourne-t-il, Ă  l’échelle, dans des organisations dont je croirais qu’elles ont vĂ©rifié ?EmpreinteLeurs documents publics

Certaines issues reviennent souvent. Quand la charge de travail est en requĂȘte-rĂ©ponse, que le dĂ©bit du deuxiĂšme jour a dĂ©passĂ© votre besoin avec de la marge et que les bibliothĂšques du cinquiĂšme jour Ă©taient vivantes, mes preuves et les vĂŽtres concordent, et la dĂ©cision porte sur votre Ă©quipe plus que sur le langage. Quand le quatriĂšme jour a rĂ©vĂ©lĂ© un cƓur limitĂ© par le CPU ou par les connexions, la conclusion honnĂȘte est un autre langage pour ce cƓur, avec Ă©ventuellement PHP autour. Et quand la semaine a Ă©tĂ© agrĂ©able mais que les sites d’offres d’emploi de votre ville Ă©taient vides, ou que les chiffres de rĂ©tention de CoĂ»t de possession vous inquiĂštent plus que le runtime, c’est une raison lĂ©gitime de dĂ©cliner. Je ne la contesterai pas, mĂȘme sous l’égide de la fondation du langage.

La limite : une semaine mesure une tranche, pas un produit, et l’équipe qui fait tourner la tranche n’est pas celle qui fera tourner le produit pendant dix ans. La semaine retire la rĂ©putation de la dĂ©cision, et laisse le jugement.

Ce que vous pouvez vĂ©rifier vous-mĂȘme

Tout ce qui prĂ©cĂšde. Si un chiffre de ces pages se rĂ©vĂšle faux quand vous le vĂ©rifiez, l’annexe des sources donne l’URL oĂč vit le bon, et le dĂ©pĂŽt derriĂšre ce livre accepte les corrections. C’est l’arrangement que vous devez attendre de tout document qui rĂ©clame votre temps.