5 votes

Désactiver le délai de lecture FastCGI dans Nginx ?

Existe-t-il un moyen de désactiver le délai de lecture pour FastCGI ? (fastcgi_read_timeout)

La mise à zéro ne fonctionne pas et entraîne un délai d'attente immédiat.

  • Nginx 1.0.5
  • PHP-FPM 5.3.6-13ubuntu3.6

La raison pour laquelle je dois contourner le délai d'attente est la façon dont les rapports sont générés par le système que nous utilisons. Comme le forking n'est pas possible en PHP-FPM (pctnl_fork() est désactivé), le traitement du rapport est effectué dès que la requête est envoyée. Cela provoque un blocage de la lecture jusqu'à ce que le traitement soit terminé par le système.

6voto

mgorven Points 29736

Il semble que votre seule option soit de mettre fastcgi_read_timeout à une valeur vraiment importante (comme 1h ou 1d).

0voto

Sašo Points 1454

Comment je m'y prendrais pour résoudre le problème :

  1. Lorsque l'utilisateur envoie une requête pour générer un rapport, utiliser exec("php report.php") pour exécuter le script de génération de rapports en mode CLI. Utilisez quelques informations identifiables comme aruguments, bien sûr.

  2. Chargement d'une page 'Please Wait' pour l'utilisateur, en utilisant AJAX pour vérifier si le rapport est terminé. ps w . Recherchez le nom du script et les arguments utilisés.

  3. Une fois cela fait, redirigez-vous vers la page de rapport.

De cette façon, vous empêchez les utilisateurs d'appuyer sur le bouton de rafraîchissement si l'attente devient trop longue (ce qui la rendrait encore plus longue), tout en informant l'utilisateur que le processus est toujours en cours.

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