Wie kann ich die PHP-Ausführung am Leben halten, nachdem ich die HTTP-Antwort an den Client gesendet habe?

Barbara Streisand
Freigeben: 2024-11-15 04:17:02
Original
732 Leute haben es durchsucht

How can I keep PHP execution alive after sending the HTTP response to the client?

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');
Nach dem Login kopieren

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 am Leben halten, 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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage