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 :
<?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