sleep
sleep($seconds)
Met le script en pause pour le nombre donné de secondes entières. Elle renvoie 0, en cas d’interruption par un signal le nombre de secondes restantes.
Paramètres
- $seconds – le nombre de secondes, un entier non négatif.
Exemples
$start = microtime(true);
var_dump(sleep(1)); // int(0)
echo round(microtime(true) - $start); // 1
// réessayer un service indisponible avec une pause croissante
function send_with_retry($send, $attempts) {
for ($attempt = 1; $attempt <= $attempts; $attempt++) {
if ($send()) {
return $attempt;
}
// une pause de 1 s, 2 s, 3 s…
sleep($attempt);
}
return false;
}
// $attempt = send_with_retry(function () { return send_order(); }, 3);
Points d’attention
- Un script en pause occupe un processus du serveur et la connexion avec le navigateur. Sur les pages, ne l’utilisez que rarement et brièvement.
- Lorsqu’une session est ouverte, elle reste verrouillée tout ce temps et les autres pages du même visiteur attendent. Appelez session_write_close() avant la pause.
- Sous Linux, le temps de pause ne compte pas dans max_execution_time (seule compte la durée d’exécution du script), sous Windows il compte.
- Un nombre décimal est tronqué en secondes entières, depuis PHP 8.1 avec en plus un avis Deprecated. Pour les fractions de seconde, il existe usleep().
- Une valeur négative provoque un avertissement en PHP 7 et une ValueError en PHP 8.
Fonctions associées :
usleep()
set_time_limit()
session_write_close()
microtime()
time_sleep_until()