2017-03-07 2 views
1

J'essaye de déboguer un script php qui pourrait prendre du temps à s'exécuter, et retourner '504 Gateway Time-out' (fonctionnant sur nginx avec fastcgi-php5-fpm, installé en utilisant les paquets officiels d'ubuntu).php error_log messages perdus au timeout

Lorsque le délai d'attente se produit, les messages php error_log ne sont pas consignés dans le fichier error.log.

Comment puis-je déboguer le script - ou au moins obtenir des journaux du script?

J'ai essayé d'appeler flush(), il suffit de vider stdout dans le navigateur client, et non dans stdlog dans le fichier journal.

un script simple pour démontrer la situation:

error.php:

<?php 
error_log("error occured!"); 
while(true){} 
?> 

EDIT:

finnaly j'ai écrit les journaux dans un fichier en utilisant

file_put_contents($filename, $message.'\n', FILE_APPEND); 

mais cela ne résout pas le problème en question - error_log n'est pas écrit lorsque php s'est terminé r timeout.

Répondre

0

Enfin j'ai écrit les journaux dans un fichier en utilisant

file_put_contents($filename, $message.'\n', FILE_APPEND); 

mais il ne résout pas le problème en question - error_log est pas écrit en php fin pour délai d'attente.