PHP -
Écrit par Durand Franck


Publié le 27.03.10
Dans la grande majorité des tutoriel de configuration de FastCGI pour PHP, il nous est proposé de configurer deux variables dans le wrapper qui sont :
PHP_FCGI_CHILDREN=4 PHP_FCGI_MAX_REQUESTS=1000
Il s'agit en fait des valeurs qui sont donné dans l'exemple d'utilisation de la documentation apache pour le module fastcgi, module qui ne sert pas exclusivement a PHP...
Ces valeurs peuvent être différentes dans les tutoriels, mais le problème reste le même. Pour le comprendre il faut comprendre à quoi servent ces deux variables.
La documentation officielle d'apache sur le sujet est écrite dans un anglais compliqué mais on peux en extraire des choses intéressantes. La première : PHP_FCGI_CHILDREN, correspond en fait au nombre de thread qu'un processus CGI aura pour traiter une requête, or dans le cas de PHP, on a beau metre cette valeur aussi haut que l'ont veux, on ne va pas augmenter le temps d'execution de la requête... un seul de ces threads étant utilisé pour l'execution.... il faut donc laisser cette valeur à 0, ce qui reduira la charge mémoire de votre serveur.
La seconde : PHP_FCGI_MAX_REQUESTS, correspond au nombre de requêtes qu'un processus CGI est autorisé a exécuter, puisque le serveur garde les processus en mémoire pour réutilisation, cela ce comprend facilement. Après ce nombre, le processus est tué - dans un but de renouvellement des processus. Dans le cas de PHP, cela peux également avoir une autre signification : une erreur 500 peut se produire si une requête est attribuée a un processus CGI en fin de vie... autrement dis, il faut également mettre cette valeur à 0. Le pire est que cela est dit juste en dessous de l'exemple dans la documentation officielle d'apache...