Setzen Sie die PHP-Verarbeitung fort, nachdem Sie eine HTTP-Antwort gesendet haben
P粉029327711
P粉029327711 2023-08-27 20:36:33
0
1
668
<p>Mein Skript wird vom Server aufgerufen. Ich erhalte <code>ID_OF_MESSAGE</code> und <code>TEXT_OF_MESSAGE</code> </p> <p>In meinem Skript werde ich den eingehenden Text verarbeiten und eine Antwort mit den Parametern <code>ANSWER_TO_ID</code> und <code>RESPONSE_MESSAGE</code> generieren. </p> <p>Das Problem besteht darin, dass ich eine Antwort auf die eingehende <code>"ID_OF_MESSAGE"</code> sende, aber der Server, der mir die Nachricht zur Verarbeitung sendet, setzt seine Nachricht auf an mich zugestellt (was bedeutet). Damit ich seine Antwort an diese ID senden kann, nachdem ich die http-Antwort 200 erhalten habe. </p> <p>Eine Lösung besteht darin, die Nachricht in einer Datenbank zu speichern und einen Cron zu erstellen, der jede Minute ausgeführt wird. Die Antwortnachricht muss jedoch sofort generiert werden. </p> <p>Gibt es eine Lösung, wie man die HTTP-Antwort 200 an den Server sendet und mit der Ausführung des PHP-Skripts fortfährt? </p> <p>Vielen Dank</p>
P粉029327711
P粉029327711

Antworte allen(1)
P粉351138462

是的。你可以这样做:

ignore_user_abort(true);//not required
set_time_limit(0);

ob_start();
// do 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)

// now the request is sent to the browser, but the script is still running
// so, you can continue...

die(); //a must especially if set_time_limit=0 is used and the task ends
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage