Heim  >  Artikel  >  Backend-Entwicklung  >  Wie sende ich HTTP-Antworten in PHP und setze die Ausführung für lang laufende Prozesse fort?

Wie sende ich HTTP-Antworten in PHP und setze die Ausführung für lang laufende Prozesse fort?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-11-16 12:30:03269Durchsuche

How to Send HTTP Responses in PHP and Continue Execution for Long-Running Processes?

Senden von HTTP-Antworten in PHP und Fortsetzen der Ausführung

Wenn Entwickler mit zeitaufwändigen Vorgängen konfrontiert werden, die die Zeitüberschreitungen von Webanwendungen überschreiten, suchen Entwickler häufig nach Lösungen, um die PHP-Ausführung über HTTP hinaus fortzusetzen Antwortlieferung. In diesem speziellen Fall besteht die Herausforderung darin, PHP in die Lage zu versetzen, umgehend eine vollständige HTTP-Antwort zu übertragen und gleichzeitig die Datenbank- und E-Mail-Verarbeitung innerhalb eines vorgeschriebenen Zeitrahmens von einer Minute zu initiieren und abzuschließen.

Die einfachste Methode ist die Verwendung von ob_end_flush( ) und Flush() funktionieren strategisch. Durch die Beendigung des Ausgabepufferungsprozesses und die Freigabe der HTTP-Header zusammen mit dem für den Benutzer sichtbaren Text signalisiert das Skript dem Client effektiv den Abschluss der Antwort.

Hier ist ein Beispielcode-Snippet, das diesen Ansatz demonstriert:

ob_end_clean();
header("Connection: close");
ignore_user_abort(); // Disable abort
ob_start();
echo ('Success message for the user');
$size = ob_get_length();
header("Content-Length: $size");
ob_end_flush(); // Flush the initial content
flush();            // Ensure proper flushing
session_write_close(); 
// Delegate time-consuming tasks here
sleep(30);
echo('Tasks completed after 30 seconds');

Bei diesem Ansatz benachrichtigt das Skript den Client über einen erfolgreichen Vorgang und initiiert nachfolgende zeitaufwändige Aufgaben, ohne dass die Anwendung Zeit verliert raus.

Das obige ist der detaillierte Inhalt vonWie sende ich HTTP-Antworten in PHP und setze die Ausführung für lang laufende Prozesse fort?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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