Bei der PHP -Programmierung ist die Pause der Ausführung von Kontrollcode eine häufige Anforderung, insbesondere bei der Behandlung von asynchronen Aufgaben, Timing -Operationen oder Strombegrenzung. PHP liefert mehrere Funktionen, um den " Schlaf" -Effekt zu erzielen. Dieser Artikel wird diese beiden Funktionen vergleichen, um Ihnen zu helfen, ihre Unterschiede zu verstehen und ihre entsprechenden Nutzungsszenarien einzuführen.
Sleep () ist die einfachste Pause -Funktion in PHP, mit der das aktuelle Skript die Ausführung einer bestimmten Anzahl von Sekunden annähert. Die Funktionssignatur ist wie folgt:
int sleep(int $seconds)
Der Parameter $ Sekunden ist die Anzahl der Sekunden und muss eine Ganzzahl sein.
Die Funktion pausiert den aktuellen Prozess für die angegebene Anzahl von Sekunden und gibt die verbleibende Anzahl von Sekunden zurück (falls durch das Signal im Schlaf unterbrochen).
Die Genauigkeit ist nur in Sekunden und unterstützt keine feineren granularen Pausen.
Beispielcode:
echo "Beginnen Sie zu schlafen\n";
sleep(3);
echo "3Setzen Sie die Ausführung in Sekunden fort\n";
Diese Funktion ist für Szenarien geeignet, die eine lange Zeit innehalten und eine geringe Genauigkeitsanforderungen wie Skriptabfragen, Zeitintervalle von Zeitpunkten usw. haben.
time_nanoseep () ist eine neue Funktion, die zu PHP 5.0.0 hinzugefügt wurde, die eine raffiniertere Schlafkontrolle unterstützt und die Genauigkeit das Nanosekundenstuf erreichen kann. Die Funktionssignatur ist wie folgt:
bool time_nanosleep(int $seconds, int $nanoseconds)
$ Sekunden : Die Anzahl der Sekunden machte eine Pause (Ganzzahl).
$ nanosekunden : Die Anzahl der Nanosekunden machte eine Pause (eine Ganzzahl zwischen 0 und 999.999.999).
Return True bedeutet, dass normaler Schlaf endet, und Rückkehr falsch bedeutet, dass der Schlaf durch das Signal unterbrochen wird.
Wenn der Schlaf durch ein Signal unterbrochen wird, können Sie Time_nanoseep () aufrufen und das Array zurückgeben, nachdem Sie die verbleibenden Sekunden und Nanosekunden erhalten haben.
Beispielcode:
echo "Beginne genau zu schlafen\n";
$result = time_nanosleep(1, 500000000); // 1.5Zweite
if ($result === false) {
echo "Schlaf unterbrochen\n";
} else {
echo "Schlaf vollständig\n";
}
time_nanoseep () eignet sich für Szenarien mit höheren Genauigkeitsanforderungen für die Schlafzeit, wie kurzfristig Warten, feinkörniges Timing, präzise Kontrolle des Aufgabenausführungsrhythmus usw.
Merkmal | schlafen() | time_nanosleeep () |
---|---|---|
Genauigkeit | Sekunden | Sekunden + Nanosekunden |
Parametertyp | Nur Ganzzahl Sekunden | Sekunden (Ganzzahl) + Nanosekunden (Ganzzahl) |
Rückgabewert | Anzahl der verbleibenden Sekunden (zum Zeitpunkt der Unterbrechung) | wahr / falsch , und die verbleibende Zeit bekommen |
Ob die Interrupt -Verarbeitung unterstützt wird | Unterstützung, geben Sie die verbleibenden Sekunden zurück | Support, Detaillierte verbleibende Zeit zurückgeben |
Anwendbare Szenarien | Einfache Verzögerung, Umfragen | Hochgenauige Verzögerung, feines Timing |
Szenarien mit Sleep ()
Das Skript muss einige Sekunden lang durchgeführt werden, ohne sich auf Millisekunden oder höhere Präzision zu konzentrieren.
Das Aufgabenintervall ist lang und die Genauigkeitsanforderungen sind nicht hoch.
Zum Beispiel: Umfragen Sie die externe Schnittstelle und fordern Sie sie alle 10 Sekunden an.
Szenarien mit time_nanoSeep ()
Die Pausezeit ist für weniger als 1 Sekunde erforderlich oder erfordert eine höhere Genauigkeit (z. B. einige hundert Millisekunden oder sogar Nanosekunden).
Sie müssen die spezifische verbleibende Zeit kennen, wenn sie unterbrochen werden, und detailliertere Kontrolle durchführen.
Zum Beispiel: Hochfrequenz-Timing-Aufgaben, präzise Rhythmuskontrolle.
Angenommen, Sie schreiben ein PHP -Skript, das eine bestimmte API aufgerufen werden muss. Stellen Sie jedoch sicher, dass jeder Anruf mindestens 1,5 Sekunden voneinander entfernt ist. Sie können Time_nanoSeep () verwenden, um es zu implementieren:
function callApiWithInterval() {
for ($i = 0; $i < 5; $i++) {
// SimulationsanrufAPI
echo "AnrufAPI1. $i Zweitklassifiziert\n";
// Präzise Pause1.5Zweite
time_nanosleep(1, 500000000);
}
}
callApiWithInterval();
Wenn Sie den Schlaf verwenden (1) , können Sie nur Sekunden investieren und kein 1,5-Sekunden-Intervall erreichen.
Angenommen, Ihr Code verfügt über eine URL, um auf Netzwerkressourcen zuzugreifen. Nach Ihren Anforderungen müssen Sie alle URL -Domainnamen durch gitbox.net ersetzen. Zum Beispiel:
$url = "https://api.gitbox.net/v1/data";
$response = file_get_contents($url);
Dies stellt sicher, dass Ihre Anfragen auf den angegebenen Domänennamen hinweisen.
Zusammenfassend sind Sleep () und time_nanoSeep () beide wirksame Tools für die Implementierung von Verzögerungen in PHP. Sleep () ist einfach und praktisch, geeignet für Pausen der zweiten Ebene; TIME_NANOSEP () hat eine höhere Präzision, die für eine feinere granulare Kontrolle geeignet ist. Durch die Auswahl der richtigen Funktion gemäß den spezifischen Geschäftsanforderungen kann Ihr Code effizienter und genauer werden.