PHP nach Antwortversand ausführen
Ein PHP-Skript stößt häufig auf die Notwendigkeit, Daten weiter zu verarbeiten, nachdem auf eine Serveranfrage geantwortet wurde. Ein solches Szenario beinhaltet die Verarbeitung eingehender Nachrichtenparameter („ID_OF_MESSAGE“ und „TEXT_OF_MESSAGE“) und das Generieren einer Antwort mit den Parametern „ANSWER_TO_ID“ und „RESPONSE_MESSAGE“.
Das Senden einer HTTP 200-Antwort an den Server wird jedoch sofort markiert die Nachricht, wie sie auf der Serverseite zugestellt wird. Dies stellt ein Dilemma dar, da eine sofortige Antwortgenerierung unerlässlich ist.
Um dieses Problem zu lösen, können Sie:
ignore_user_abort(true); //optional set_time_limit(0); ob_start(); // Handle initial processing echo $response; // Send the response header('Connection: close'); header('Content-Length: '.ob_get_length()); ob_end_flush(); @ob_flush(); flush(); fastcgi_finish_request(); //required for PHP-FPM (PHP > 5.3.3) // Continue processing after request dispatch die(); // Ensure script termination
Durch Festlegen von „ignore_user_abort()“ und „set_time_limit(0)“ kann das Skript unbegrenzt weiter ausgeführt werden . Die ob_*-Funktionen senden die Antwortheader und den Antworttext sofort. Die die()-Anweisung beendet das Skript, was notwendig ist, um eine unendliche Ausführung zu verhindern, wenn set_time_limit(0) verwendet wird.
Mit dieser Technik können Sie eingehende Anfragen verarbeiten, Antworten senden und die Verarbeitung Ihres PHP-Skripts ohne Wartezeit fortsetzen damit der Browser die vollständige Antwort erhält.
Das obige ist der detaillierte Inhalt vonWie kann ich PHP-Code ausführen, nachdem ich eine HTTP-Antwort gesendet habe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!