Je voudrais limiter une section spécifique de PHP à X secondes - si cela prend plus de temps, tuer le code en cours d'exécution (juste la section, pas le script entier) et lancer un code alternatif.
Exemple de pseudo-code (l'exemple de cas d'utilisation ici est une API instable qui est parfois rapide et d'autres fois un trou noir) :
$completed = 1;
$seconds = 60;
while ($completed != -1 && $completed < 5) {
limit ($seconds) {
$api = new SomeAPI('user','secret','key');
$data = $api->getStuff('user="bob"');
$completed = -1;
} catch () {
$completed++;
sleep(10);
}
}
if ($completed === 5) echo "Error: API black-hole'd 5 times.\n";
else {
//Notice: data processing is OUTSIDE of the time limit
foreach ($data as $row) {
echo $row['name'].': '.$row['message']."\n";
}
}
CEPENDANT, cela devrait fonctionner pour tout ce qui est . Pas seulement les demandes API/HTTP. Par exemple, une procédure intensive de base de données.
Au cas où vous liriez trop vite : set_time_limit
y max_execution_time
sont no la réponse car ils affectent le délai de la tout le script plutôt qu'une simple section (à moins que je ne me trompe sur leur fonctionnement, bien sûr).