PHP-Ausführung nach der HTTP-Antwort am Leben halten
In Umgebungen, in denen PHP als mod_php von Apache ausgeführt wird, besteht eine häufige Herausforderung darin, die PHP-Ausführung danach aufrechtzuerhalten Senden einer HTTP-Antwort an den Client. Diese Einschränkung ergibt sich aus der Notwendigkeit, Fehlermeldungen innerhalb einer bestimmten Zeitüberschreitungsdauer an eine Anwendung zu melden.
Um dieses Problem zu beheben, liegt der Schlüssel darin, die HTTP-Antwort so früh wie möglich zu senden, ohne den laufenden Betrieb zu unterbrechen. Eine effektive Methode ist die Verwendung des folgenden Code-Snippets:
ob_end_clean(); header("Connection: close"); ignore_user_abort(); // optional ob_start(); echo ('Text the user will see'); $size = ob_get_length(); header("Content-Length: $size"); ob_end_flush(); flush(); session_write_close(); // Added per suggestion // Do processing here sleep(30); echo('Text user will never see');
Dieses Snippet löscht zunächst alle ausstehenden Ausgaben und konfiguriert die HTTP-Verbindung zum Schließen. Durch das Ignorieren benutzerinitiierter Abbruchversuche und die Angabe der Inhaltslänge wird die HTTP-Antwort effektiv versendet. Anschließend kann eine laufende Verarbeitung ausgeführt werden, beispielsweise Datenbankoperationen oder E-Mail-Versand.
Mit dieser Methode kann PHP eine vollständige HTTP-Antwort an den Client senden und die Ausführung für einen bestimmten Zeitraum fortsetzen, wodurch das Problem effektiv gelöst wird Einschränkungen bei der Fehlerberichterstattung durch externe Anwendungen. Dieser Ansatz ist besonders nützlich in Szenarien, in denen zeitaufwändige Vorgänge ausgeführt werden müssen, ohne vorgegebene Zeitüberschreitungen zu überschreiten.
Das obige ist der detaillierte Inhalt vonWie kann ich die PHP-Ausführung aufrecht erhalten, nachdem ich die HTTP-Antwort an den Client gesendet habe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!