Im Allgemeinen wünscht man sich, dass die eigenen PHP-Scripte möglichst schnell ausgeführt werden - schließlich sollen die Besucher einer Web-Seite nicht unnötig lange auf die Inhalte warten. Es gibt aber auch Anlässe, die Ausführung eines Scripts bewusst zu verzögern: Sei es, um Downloads zu bremsen (und so Bandbreite zu sparen), oder um besondere Effekte (beispielsweise bei Spielen) zu erzielen.
Eine Verzögerung um eine bestimmte Zeitspanne kann in PHP mit der Funktion sleep() erreicht werden.
Der Syntax:
sleep(Sekunden)
Der Parameter gibt die Dauer in Sekunden an, um welche die Ausführung verzögert werden soll. Abgesehen von der Verzögerung hat ein Aufruf der Funktion sleep() keine weiteren Auswirkungen. Das folgende Beispiel zeigt den Effekt der Funktion.
Beispiel:
<?php
echo 'Script Start: '.date('h:i:s') . ' Uhr<br>';
sleep(5);
echo 'Script Ende: '.date('h:i:s') . ' Uhr<br>';
?>
In der ersten Zeile des Script wird die aktuelle Uhrzeit ausgegeben. Anschließend wird die Funktion sleep() aufgerufen, gefolgt von einer weiteren Ausgabe der Uhrzeit.
Ausgabe*:
Script Start: 10:23:51 Uhr
Script Start: 10:23:56 Uhr
Wie die Ausgabe erkennen lässt, liefert der zweite Aufruf der Funktion date() eine Uhrzeit, die fünf Sekunden nach dem Ergebnis des ersten Aufrufs liegt. Diese fünf Sekunden Unterschied werden durch den Aufruf von sleep() mit dem Parameter "5" erreicht.
Wie oben erwähnt, können Sie mit der Funktion sleep() bei Downloads von ihrer Web-Seite die Geschwindigkeit beschränken, mit der die Benutzer Dateien abrufen können. Das kann sinnvoll sein, wenn Sie für das Hosting Ihrer Seite den Datenverkehr nach Menge bezahlen müssen. Fügen Sie am Anfang Ihres Scripts einen Aufruf der Funktion ein, der den Ablauf geeignet verzögert. Dieses Schema lässt sich verfeinern, indem die Verzögerungsdauer an die aktuelle Belastung des Web-Servers angepasst wird: Durch das Mitzählen der Seitenaufrufe kann ermittelt werden, wie viele Seiten pro Sekunde ausgeliefert werden, und dann sollte beim Überschreiten eines Grenzwertes die Verzögerungszeit erhöht werdem.
* = Die genaue Ausgabe hängt natürlich davon, um welche Uhrzeit Sie das Script aufrufen.