Fortsetzung der PHP-Ausführung nach dem Senden einer Antwort
In einem Szenario, in dem ein PHP-Skript eine eingehende Nachricht empfängt, sie verarbeitet und eine Antwort an sendet Beim anfragenden Server besteht die Notwendigkeit, die Ausführung des PHP-Skripts nach dem Senden der ersten Antwort fortzusetzen. Dies wird zu einer Herausforderung, da der Server die Nachricht normalerweise als zugestellt markiert, wenn er eine HTTP 200-Antwort erhält.
Vermeidung von Datenbankspeicherung und Cron-Jobs
Anstatt auf das Speichern von Nachrichten zurückzugreifen Wenn Sie eine Datenbank erstellen und sich auf einen Cron-Job verlassen, gibt es eine unmittelbarere Lösung. Dazu gehört das Senden der HTTP 200-Antwort und die anschließende Fortsetzung der PHP-Skriptausführung.
PHP-Skriptimplementierung
Um diese Lösung zu implementieren, befolgen Sie diese Schritte in Ihrem PHP-Skript:
ignore_user_abort(true); // Not required but can prevent premature termination set_time_limit(0); ob_start(); // Perform initial processing here 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 script execution // ... die(); // End the script especially when set_time_limit=0 is used and the task is complete
Diese Codesequenz ermöglicht es dem Skript, die Antwort zu senden, der PHP-Prozess läuft jedoch weiter. Sie können bei Bedarf weitere Verarbeitungen oder Aufgaben durchführen oder eine weitere Antwort senden. Es ist wichtig, am Ende die() aufzurufen, um das Skript zu beenden und Ressourcen freizugeben.
Das obige ist der detaillierte Inhalt vonWie kann ich die PHP-Skriptausführung nach dem Senden einer HTTP-Antwort fortsetzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!