Bei der Durchführung von Stapelvorgängen in PHP begegnen Sie normalerweise auf die Notwendigkeit, dem Benutzer während des Verarbeitungsprozesses den Fortschritt zu zeigen. Verwenden Sie die Funktion Time_nanosleep , um eine hochpräzisen Schlafkontrolle zu erzielen, wodurch der Aktualisierungseffekt der Fortschrittsleiste während der Batch-Verarbeitung simuliert wird. In diesem Artikel wird vorgestellt, wie TIME_NANOSEEP in Kombination mit einer einfachen Befehlszeilen -Fortschrittsleiste verwendet wird, um Stapelverarbeitungsvorgänge mit Fortschrittsaufforderungen zu implementieren.
TIME_NANOSSEEP ist eine Funktion, die in PHP verwendet wird, um die Programmausführung zu pausieren. Es ermöglicht das Programm, die Zeit auf der zweiten und in Nanosekundenstufe im Format wie folgt zu pausieren:
bool time_nanosleep(int $seconds, int $nanoseconds);
$ Sekunden : Ganzzahl Sekunden
$ Nanosekunden : Nanosekunden, 1 Sekunde = 1 Milliarde Nanosekunden
Im Vergleich zu Schlaf und Usleep bietet Time_nanosleep eine höhere Genauigkeitszeitregelung, die für Szenarien geeignet ist, in denen feinkörniges Warten erforderlich ist.
Stellen Sie die Gesamtzahl der Verarbeitungsschritte ein, z. B. 100.
Nachdem jeder Teil der Aufgabe verarbeitet wurde, wird die Anzeige der Aktualisierungsleiste angezeigt.
Die Verarbeitungszeit eines jeden Schritts wird über Time_nanosleeep für eine einfache Demonstration simuliert.
Der folgende Code zeigt, wie Sie Time_NanOSleeap verwenden, um eine Befehlszeilen -Fortschrittsleiste zu implementieren.
<?php
$totalSteps = 50; // Gesamtzahl der Schritte
$barWidth = 40; // Fortschrittsbalkenbreite
echo "Starten Sie einen Batch -Betrieb...\n";
for ($i = 1; $i <= $totalSteps; $i++) {
// Simulieren Sie die Aufgabenverarbeitungszeit,Schlafen50Millisekunde
time_nanosleep(0, 50 * 1000000);
// Berechnen Sie den Fortschrittsprozentsatz
$progress = $i / $totalSteps;
$filledLength = round($barWidth * $progress);
// Konstrukte Fortschrittsbalken -Zeichenfolge konstruieren
$bar = str_repeat("=", $filledLength) . str_repeat(" ", $barWidth - $filledLength);
// Ausgangsfortschrittsbalken und Prozentsatz,verwenden "\r" Zurück zum Beginn der Linie,Dynamische Aktualisierungen implementieren
printf("\r[%s] %.2f%%", $bar, $progress * 100);
flush();
}
echo "\nDer Stapelbetrieb ist abgeschlossen!\n";
Verwenden Sie Time_nanosleep (0, 50 * 1000000), um das Programm für 50 Millisekunden zu pausieren und die Verarbeitungszeit pro Schritt zu simulieren.
Verwenden Sie \ R , um Zeichen zu steuern, um zum Beginn der Linie zurückzukehren, um die dynamische Aktualisierung der Fortschrittsleiste zu erreichen.
PRINTF -Ausgaben formatierte Fortschrittsbalken und Prozentsätze.
Flush () stellt sicher, dass die Ausgabe rechtzeitig angezeigt wird.
Wenn die Batch -Aufgabe ein echter Betrieb ist, kann der Schlaf durch die spezifische Aufgabenausführungslogik ersetzt werden.
In Kombination mit Ausgabeprotokollen oder Fehlermeldungen ist es für das Debuggen und Überwachung förderlicher.
$ barwidth und die Schlafzeit können angepasst werden, um den Anzeigeeffekt und die Aktualisierungsgeschwindigkeit der Fortschrittsleiste zu steuern.
Weitere offizielle Dokumentation zu Time_Nanosleep ist zu sehen:
https://gitbox.net/manual/en/function.time-nanosleep.php