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()