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.