W3docs

usleep()

In diesem Artikel behandeln wir die PHP-Funktion usleep(): einen Überblick, ihre Funktionsweise und Anwendungsbeispiele.

In diesem Artikel behandeln wir die PHP-Funktion usleep(). Wir geben Ihnen einen Überblick über die Funktion, ihre Funktionsweise und Beispiele für ihre Verwendung.

Einführung in die usleep()-Funktion

Die usleep()-Funktion ist eine eingebaute Funktion in PHP, die verwendet wurde, um die Ausführung eines Skripts für eine angegebene Anzahl von Mikrosekunden anzuhalten. Sie ermöglichte Verzögerungen mit sehr präzisem Timing.

Hinweis: usleep() wurde in PHP 8.1 als veraltet markiert und in PHP 8.2 entfernt. Verwenden Sie für modernes PHP stattdessen time_nanosleep() oder time_sleep_until().

Die usleep()-Funktion nimmt ein einzelnes Argument entgegen, das die Anzahl der Mikrosekunden angibt, um die die Ausführung des Skripts angehalten werden soll. Eine Mikrosekunde ist ein Millionstel einer Sekunde, daher entsprechen 1000000 Mikrosekunden einer Sekunde. Diese feinere Granularität unterscheidet usleep() von sleep(), das nur ganze Sekunden akzeptiert.

Syntax

usleep(int $microseconds): void
ArgumentTypBeschreibung
$microsecondsintDie Anzahl der Mikrosekunden, um die das Skript angehalten wird. 1 Sekunde = 1000000 Mikrosekunden.

Verwendung der usleep()-Funktion

Die Verwendung der usleep()-Funktion ist sehr einfach. Sie müssen lediglich die Funktion aufrufen und die Anzahl der Mikrosekunden übergeben, um die die Ausführung des Skripts angehalten werden soll. Hier ist ein Beispiel:

Wie verwendet man die usleep()-Funktion?

php— editable, runs on the server

In diesem Beispiel rufen wir die usleep()-Funktion mit dem Argument 500000 für die Anzahl der Mikrosekunden auf, um die die Ausführung des Skripts angehalten werden soll. Dies hält die Ausführung des Skripts für 500 Millisekunden (0,5 Sekunden) an. Wir geben dann eine Meldung auf der Konsole aus, die anzeigt, dass wir schlafen, warten die angegebene Zeit ab und geben dann eine weitere Meldung aus, die anzeigt, dass wir fertig sind.

Messung der Verzögerung

Da Mikrosekunden leicht falsch gezählt werden können, ist es hilfreich, die tatsächlich vergangene Zeit mit microtime() zu messen. Das folgende Beispiel schläft eine Viertelsekunde und gibt die tatsächliche Dauer aus:

<?php
$start = microtime(true);
usleep(250000); // 250000 microseconds = 0.25 seconds
$elapsed = microtime(true) - $start;
echo "Slept for " . round($elapsed, 3) . " seconds\n";
?>

Die Ausgabe ist ungefähr Slept for 0.25 seconds — sie kann geringfügig länger sein, da das Betriebssystem entscheidet, wann der Prozess aufgeweckt wird.

Wann sollte usleep() verwendet werden?

usleep() ist nützlich, wenn eine ganzsekündige Pause von sleep() zu grob ist:

  • Rate-Limiting — Hinzufügen einer kleinen Lücke zwischen wiederholten API-Aufrufen oder Schleifeniterationen, um unter einem Anfragekontingent zu bleiben.
  • Polling — Warten eines Bruchteils einer Sekunde, bevor eine Datei, ein Lock oder eine Queue erneut überprüft wird.
  • Ausgabe drosseln — Verlangsamen einer CLI-Animation oder Fortschrittsanzeige, damit sie lesbar ist.

Für Pausen im Nanosekundenbereich oder wenn der Aufruf nach einem Signal zuverlässig fortgesetzt werden soll, bevorzugen Sie time_nanosleep(). Um bis zu einem bestimmten Zeitpunkt anzuhalten, verwenden Sie time_sleep_until().

Leistungsüberlegungen

Die usleep()-Funktion ist leichtgewichtig und verwendet OS-Sleep-Aufrufe, hat also vernachlässigebaren CPU-Overhead. Die tatsächliche Pausendauer hängt jedoch vom OS-Scheduler ab, was bedeutet, dass Präzision im Sub-Millisekundenbereich nicht garantiert ist. Für höhere Präzision oder moderne PHP-Praktiken sollten Sie time_nanosleep() oder time_sleep_until() in Betracht ziehen.

Fazit

Zusammenfassend lässt sich sagen, dass die usleep()-Funktion eine unkomplizierte Möglichkeit ist, die Skriptausführung in Legacy-PHP-Umgebungen anzuhalten. Wenn Sie ihre Einheitenanforderungen, das betriebssystemabhängige Timing-Verhalten und den Deprecation-Status verstehen, können Sie sie effektiv für einfache Verzögerungen einsetzen oder zu modernen Alternativen wie time_nanosleep() oder time_sleep_until() migrieren.

Übungen

Übung
Was ist der Zweck der usleep()-Funktion in PHP?
Was ist der Zweck der usleep()-Funktion in PHP?
Was this page helpful?