Timeout à l'exécution d'une commande via exec()
Posté : 18 mars 2015, 14:49
Bonjour,
je travaille sous Windows 2008 R2, sur lequel j'ai installé PHP 5.6.6 et Python 2.7.9.
J'ai un script PHP, tout ce qu'il y a de plus simple, que voici :
Lors de la première exécution de mon script PHP, j'ai eu le message :
"PHP Fatal error: Maximum execution time of 30 seconds exceeded in deploy_to_server.py ..."
J'ai donc modifier les variables dans php.ini, en ayant fait l'estimation que 5min étaient suffisantes pour la copie :
- max_execution_time = 300
- max_input_time = 300
Je n'ai plus le message d'erreur de timeout, par contre je n'ai pas le retour de mon script python ($result).
Mais si la copie prend moins de 30 secondes, j'ai le retour de mon script python.
Et à 32 secondes, je n'ai pas le retour. C'est précis.
D'où viennent ces 30 secondes qui font que j'ai ou non le retour de mon script ?
Existe-t-il une autre configuration pour PHP que j'aurai oublié ?
Sachant que dans les deux cas, mon script est exécuté en intégralité et que PHP rend la main qu'à ce moment là.
Merci
Sylvain
je travaille sous Windows 2008 R2, sur lequel j'ai installé PHP 5.6.6 et Python 2.7.9.
J'ai un script PHP, tout ce qu'il y a de plus simple, que voici :
<?php
$output="";
$retval="";
$array = array();
if ( isset($_GET["message"]) )
{
$msg = $_GET["message"];
}
$cmd = "deploy_to_server.py " . $msg;
$result = exec($cmd,$output,$retval);
if ( $retval == 1 )
{
$array['success'] = FALSE;
$array['result'] = $result;
}
else
{
$array['success'] = TRUE;
$array['result'] = $result;
}
echo json_encode($array);
?>
Le script python "deploy_to_server.py" copie les fichiers ayant les noms contenus dans "message". Ces fichiers peuvent être volumineux (environ 1Go maximum).Lors de la première exécution de mon script PHP, j'ai eu le message :
"PHP Fatal error: Maximum execution time of 30 seconds exceeded in deploy_to_server.py ..."
J'ai donc modifier les variables dans php.ini, en ayant fait l'estimation que 5min étaient suffisantes pour la copie :
- max_execution_time = 300
- max_input_time = 300
Je n'ai plus le message d'erreur de timeout, par contre je n'ai pas le retour de mon script python ($result).
Mais si la copie prend moins de 30 secondes, j'ai le retour de mon script python.
Et à 32 secondes, je n'ai pas le retour. C'est précis.
D'où viennent ces 30 secondes qui font que j'ai ou non le retour de mon script ?
Existe-t-il une autre configuration pour PHP que j'aurai oublié ?
Sachant que dans les deux cas, mon script est exécuté en intégralité et que PHP rend la main qu'à ce moment là.
Merci
Sylvain