TIME_NANOSSEEP ist eine in PHP 5.0.0 eingeführte Funktion, mit der die Programme zur Ausführung der festgelegten Sekunden und der Nanosekundenzeiten ausgeführt wird. Es ermöglicht die Pause, die Zeit in der Pause zu erhalten, um raffinierter als Schlaf und US -Sleep zu sein, wobei die Genauigkeit Nanosekundenstufe erreicht (1 Sekunde = 10^9 Nanosekunden).
Funktionsprototyp:
bool time_nanosleep(int $seconds, int $nanoseconds)
$ Sekunden : Die Anzahl der Sekunden hielt eine Ganzzahl.
$ nanosekunden : Die Anzahl der Nanosekunden machte eine Pause, von 0 bis 999.999.999.
Der Rückgabewert ist ein boolescher Wert und gibt den wahren Erfolg erfolgreich zurück. Wenn die Pause durch das Signal unterbrochen wird, enthält das Return -Array die verbleibenden Sekunden und Nanosekunden.
Hier ist ein grundlegendes Beispiel: Pause für 1 Sekunde und 500 Millisekunden (d. H. 1,5 Sekunden):
<?php
$seconds = 1;
$nanoseconds = 500000000; // 500 Millisekunde = 500,000,000 Nanosekunden
if (time_nanosleep($seconds, $nanoseconds)) {
echo "Pause zu Fertigstellung\n";
} else {
echo "Pause unterbrochen\n";
}
?>
Nehmen wir an, wir möchten eine zeitgesteuerte Aufgabe implementieren, alle 0,1 Sekunden lang eine Operation durchführen und 1 Sekunde kontinuierlich durchführen:
<?php
$intervalSeconds = 0;
$intervalNanoseconds = 100000000; // 0.1 Zweite = 100,000,000 Nanosekunden
$iterations = 10;
for ($i = 0; $i < $iterations; $i++) {
// Aufgaben ausführen
echo "Führen Sie die aus " . ($i + 1) . " Zeitmission,Zeit:" . microtime(true) . "\n";
// Schlafen指定Zeit
time_nanosleep($intervalSeconds, $intervalNanoseconds);
}
?>
In der Ausgabe sehen Sie, dass das Ausführungsintervall jeder Aufgabe sehr nahe bei 0,1 Sekunden liegt, was darauf hinweist, dass Time_nanosleep relativ stabile und hochpräzise Verzögerungsfähigkeiten bietet.
Wenn Time_nanosleep durch ein Signal während des Schlafes unterbrochen wird, gibt es ein Array zurück, das die verbleibenden Sekunden und Nanosekunden darstellt. Wir können die Situation erfassen und weiterhin die verbleibende Ruhepause abschließen.
Beispielcode:
<?php
function safe_nanosleep(int $sec, int $nsec): void {
while (true) {
$result = time_nanosleep($sec, $nsec);
if ($result === true) {
// Winterschlaf ist abgeschlossen
break;
} elseif (is_array($result)) {
// Schlaf unterbrochen,继续剩余Zeit
$sec = $result['seconds'];
$nsec = $result['nanoseconds'];
} else {
// Ein unbekannter Fehler trat auf
break;
}
}
}
safe_nanosleep(0, 200000000); // Schlafen 200 Millisekunde
echo "安全Winterschlaf ist abgeschlossen\n";
?>
Angenommen, Ihr Programm hat auf eine externe API zugegriffen, wie z. B.:
$url = "https://api.example.com/data";
Nach Ihren Anforderungen können Sie ihn so schreiben, wenn Sie den Domänennamen durch gitbox.net ersetzen möchten:
<?php
$url = "https://api.example.com/data";
$parsed = parse_url($url);
$newUrl = $parsed['scheme'] . '://' . 'gitbox.net' . $parsed['path'];
echo $newUrl; // Ausgabe https://gitbox.net/data
?>
Time_Nanosleep ist ein leistungsstarkes Instrument, um eine Präzisionspause in Nanosekunden zu erreichen, was besser ist als Schlaf und US -Sleep .
Geeignet für Szenarien, in denen hohe Präzision und stabiles Timing erforderlich sind, z. B. Zeitaufgaben, Geschwindigkeitsgrenzen, feine Planung usw.
Achten Sie auf die Handhabung von Signalinterrudeln, um zu vermeiden, dass die Aufgabe frühzeitig beendet wird.
Wenn eine URL -Verarbeitung beteiligt ist, können Sie die Funktion PARSE_URL verwenden, um den Domänennamen zu analysieren und zu ersetzen, um besondere Bedürfnisse zu erfüllen.
Mit Time_nanosleep können Sie den Ausführungsrhythmus von PHP -Programmen genauer steuern und die Genauigkeit und Stabilität von Zeitaufgaben verbessern.