Ausgabelöschung in PHP: Live-Protokolle während der Verarbeitung anzeigen
In PHP ist es oft wünschenswert, die Ausgabe im Browser des Benutzers als Skript anzuzeigen Prozesse, anstatt darauf zu warten, dass das gesamte Skript abgeschlossen ist. Dies kann nützlich sein, um Protokolle oder Fortschrittsaktualisierungen in Echtzeit anzuzeigen. Standardmäßig puffert PHP jedoch die Ausgabe, was bedeutet, dass sie erst am Ende des Skripts an den Client gesendet wird.
Ist 'ob_flush()' ausreichend?
A Ein üblicher Ansatz zum Leeren der Ausgabe nach jedem Echo-Aufruf ist die Verwendung der Funktion ob_flush(). Dies löst das Problem jedoch nur teilweise. Der Ausgabepuffer wird zwar geleert, die Daten werden aber nicht wirklich an den Client gesendet.
PHP- oder Apache-Fehler? Untersuchen des Problems
Wenn ob_flush() nicht funktioniert, könnte es ein Problem mit der PHP-Konfiguration oder den Apache-Einstellungen sein. Um die Konfiguration von PHP zu überprüfen, führen Sie den folgenden Befehl aus:
php -i | grep output_buffering
Hier sollte angezeigt werden, ob die Ausgabepufferung aktiviert ist und wie groß der Puffer ist. Wenn die Ausgabepufferung deaktiviert ist, ist dies nicht die Ursache des Problems.
Die ultimative Lösung
Die endgültige Lösung für dieses Problem besteht darin, die Ausgabepuffergröße auf 0 zu setzen . Dadurch wird PHP angewiesen, die Ausgabe sofort ohne Pufferung an den Client zu senden.
ini_set('output_buffering', 0);
Final Gedanken
Indem Sie die Ausgabepuffergröße auf 0 setzen, können Sie sicherstellen, dass die Ausgabe nach jedem Echo-Aufruf geleert wird, sodass Benutzer Ihre Protokolle oder Fortschrittsaktualisierungen in Echtzeit anzeigen können.
Das obige ist der detaillierte Inhalt vonWie erreicht man in PHP eine Ausgabelöschung in Echtzeit für Live-Protokolle?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!