Matthieu Napoli a ouvert une discussion RFC autour de --enable-cli-fpm. Cette option de compilation intégrerait la SAPI FPM à l’exécutable php. FPM serait lancé lorsque --fpm apparaît en premier argument, ou lorsque le programme est appelé sous un nom commençant par php-fpm. Les autres appels continueraient d’utiliser la CLI avec son comportement actuel. La construction produirait aussi l’exécutable php-fpm autonome.

terminal
php script.php # CLI, as today
php --fpm --nodaemonize -y /etc/php-fpm.conf # FPM
ln -s php php-fpm
./php-fpm --nodaemonize -y /etc/php-fpm.conf # FPM, through a symlink

Napoli a évalué la proposition avec Bref sur AWS Lambda. Le déploiement d’un seul exécutable retirerait de l’environnement l’un des deux binaires d’environ 26 Mo. Cette réduction libérerait de l’espace pour le code applicatif sous la limite de 250 Mo de Lambda. Le démarrage à froid d’une application FPM minimale gagnerait 70 ms, soit 25 %, car le moteur ne serait plus chargé une seconde fois après son chargement par la CLI. Le principe pourrait aussi profiter aux systèmes qui dépendent d’un démarrage rapide ou disposent de peu d’espace disque, notamment les plateformes d’autoscaling et de serverless.

Une seconde question porte sur l’activation de l’option par défaut. Marc avait proposé ce vote lorsque Napoli demandait le statut nécessaire pour présenter le RFC. Napoli sollicite aussi l’avis des mainteneurs de paquets sur un lien symbolique php-fpm pointant vers l’exécutable php combiné. Le paquet FPM ne contiendrait alors plus que les fichiers de configuration et de service. L’implémentation se trouve dans la pull request 23558 de php/php-src, relue jusqu’ici par Jakub et Marc.