Für diverse Scripts kann es vonnöten sein, seinen Ablauf um eine bestimmte Zeitspanne zu verzögern. Hierzu gibt es die Funktion usleep();, die den kompletten Ablauf des Scripts um die im Parameter angegebene Anzahl an Mikrosekunden (ms) verzögert.
Die Syntax:
usleep(Anzahl_Mikrosekunden);
Hierbei ist zu beachten, dass der Befehl auf Windows-System erst ab der PHP Version 5.0 oder höher funktioniert.
Beispiel 1:
<?php
echo 'Start des PHP Script: '.date('h:i:s') . '<br>';
usleep(5000000);
echo 'Ende des PHP Script: '.date('h:i:s') . '<br>';
?>
Ausgabe:
Start des PHP Script: [Uhrzeit zu Ausführungsbeginn]
Ende des PHP Script: [Uhrzeit fünf Sekunden (5000000 ms) nach Ausführungsbeginn]
Erklärung:
Der Befehl date() gibt die aktuelle Uhrzeit im Format hh:mm:ss aus, was direkt am Anfang des Scripts, und nach der durch usleep(); erzeugten Verzögerung geschieht. Anschließend wird das Ergebnis an den Client gesendet.
Eine praktischere Anwendungsmöglichkeit stellt unter anderem ein einfacher Countdown dar. Hierbei muss allerdings zusätzlich beachtet werden, dass bei einfacher Anwendung von usleep zunächst das komplette Script durch den Server abgearbeitet, und das Ergebnis erst dann an den Client-Browser weitergeleitet wird. Der Benutzer würde hierbei also nur das Endergebnis zu sehen bekommen. Um dies zu umgehen, wird die Funktion flush(); verwendet, die das Zwischenergebnis zum Zeitpunkt der Ausführungs dieser Funktion an den Client sendet.
Beispiel 2:
<?php
echo "Countdown von 10!<br>";
for ($x = 10; $x >= 0; $x-- ) {
echo "--- ".$x." ---<br>";
flush();
usleep(1000000);
}
?>
Ausgabe:
Countdown von 10!
10
9
8
7
6
5
4
3
2
1
0
Erklärung:
Nach Beginn des Scripts mit echo(); wird eine for-Schleife gestartet, die zehnmal ausgeführt werden soll und dabei jedes ihre Zählvariable ausgibt, das Zwischenergebnis an den Client sendet und danach für eine Sekunde pausiert.
Eine weitere Möglichkeit, ein Script zu verzögern bietet die Funktion sleep();, wobei hier die zu verzögernde Zeit in Sekunden angegeben wird.