time_sleep_until în PHP

Oprește scriptul până la un moment anume, dat ca timestamp.

Sintaxă
time_sleep_until(float $timestamp): bool

Ce face time_sleep_until

time_sleep_until așteaptă până la momentul dat (un timestamp, cu zecimale permise), nu un număr de secunde. Este util pentru operații care trebuie să pornească la intervale regulate, indiferent cât a durat pasul anterior.

Momentul trebuie să fie în viitor. Pentru un moment trecut, funcția returnează false cu un avertisment.

Parametri

Parametru Descriere
$timestamp Momentul până la care se așteaptă, de exemplu microtime(true) + 0.5.

Ce returnează

true la succes, false la eroare.

Exemple

Exemplul 1: Pași la intervale fixe

Fiecare pas pornește la 0,2 secunde după precedentul, chiar dacă lucrul din pas durează diferit.

<?php
$urmatorul = microtime(true);

for ($pas = 1; $pas <= 3; $pas++) {
    echo "Pasul $pas\n";
    $urmatorul += 0.2;
    time_sleep_until($urmatorul);
}

Rezultat

Pasul 1
Pasul 2
Pasul 3

Greșeli frecvente

  • Calculezi momentul la începutul unui pas lung și ajunge deja în trecut. Primești Warning: time_sleep_until(): Argument #1 ($timestamp) must be greater than or equal to the current time.

Comenzi înrudite

  • sleep / usleep: Oprește scriptul pentru un număr de secunde (sleep) sau de microsecunde (usleep).
  • time_nanosleep: Oprește scriptul pentru un număr de secunde plus nanosecunde.
  • microtime / hrtime: Returnează momentul curent cu precizie de microsecunde. Este folosită pentru măsurarea duratei unui cod.