2 votes

PHP via FastCGI: "terminé en appelant exit()"

Je viens de convertir récemment mon serveur d'une configuration mod_php à une configuration php via mod_fcgid. Tout fonctionne bien : c'est rapide, facile, ça ne crash pas, etc etc etc.

Le problème que je rencontre est que les fichiers journaux se remplissent de messages comme celui-ci :

[Sat Nov 14 00:43:17 2009] [notice] mod_fcgid: process /var/www/fcgi-bin.d/php5-default/php-fcgi-wrapper(9451) exit(server exited), terminated by calling exit(), return code: 0
[Sat Nov 14 00:43:23 2009] [notice] mod_fcgid: process /var/www/fcgi-bin.d/php5-default/php-fcgi-wrapper(9453) exit(server exited), terminated by calling exit(), return code: 0
[Sat Nov 14 00:43:27 2009] [notice] mod_fcgid: process /var/www/fcgi-bin.d/php5-default/php-fcgi-wrapper(9457) exit(server exited), terminated by calling exit(), return code: 0
[Sat Nov 14 00:43:27 2009] [notice] mod_fcgid: process /var/www/fcgi-bin.d/php5-default/php-fcgi-wrapper(9459) exit(server exited), terminated by calling exit(), return code: 0
[Sat Nov 14 00:43:41 2009] [notice] mod_fcgid: process /var/www/fcgi-bin.d/php5-default/php-fcgi-wrapper(9463) exit(server exited), terminated by calling exit(), return code: 0
[Sat Nov 14 00:43:47 2009] [notice] mod_fcgid: process /var/www/fcgi-bin.d/php5-default/php-fcgi-wrapper(9461) exit(server exited), terminated by calling exit(), return code: 0
[Sat Nov 14 00:43:58 2009] [notice] mod_fcgid: process /var/www/fcgi-bin.d/php5-default/php-fcgi-wrapper(9466) exit(server exited), terminated by calling exit(), return code: 0

Dans mon fichier apache2.conf, j'ai configuré les journaux pour E_ALL & ~E_NOTICE. Mon fichier php.ini est configuré pour ne pas enregistrer les erreurs.

J'utilise la commande exit dans mon code php, mais je ne comprends pas pourquoi elle générerait une notice dans les fichiers journaux. Toute aide serait appréciée.

1voto

Jim Points 53

Dans les scripts CGI standard, le serveur lance le script, lui envoie une seule demande, puis s'attend à ce que le script se termine.

Dans un script FCGI, le serveur le lance une fois, et envoie de nombreuses demandes, une à la fois. Cela signifie que votre script ne devrait pas se terminer après une seule demande, mais seulement se terminer en cas d'erreurs où il ne peut pas répondre utilement (même s'il devait répondre avec un code 500.)

Donc, je pense que vous perturbez Apache en sortant à chaque fois.

0 votes

D'accord, utiliser exit dans FastCGI est source de confusion.

0 votes

Je n'appelle actuellement pas exit() pour terminer tous les scripts, je l'utilise pour la validation des entrées et lorsque je produis des données mises en cache, etc. Y a-t-il un moyen de simplement terminer le script sans générer d'erreur ? Parfois, l'utilisation de exit() est tout simplement inévitable.

0 votes

En fonctionnement normal, vous ne devriez jamais appeler exit(). Si vous rencontrez quelque chose avec quoi vous ne pouvez tout simplement pas faire face (comme, une connexion à la base de données a échoué, ou autre), alors bien sûr vous pouvez le faire. Sinon, si vous sortez dans le flux normal (et la gestion des mauvaises entrées est un flux normal sur le web !), alors vous perdez tous les avantages d'utiliser fcgi en général.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X