Heim > Artikel > Backend-Entwicklung > Wie sende ich HTTP-Antworten in PHP und setze die Ausführung für lang laufende Prozesse fort?
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!