応答ディスパッチ後の PHP の実行
PHP スクリプトでは、サーバー リクエストに応答した後、さらにデータを処理する必要が生じることがよくあります。このようなシナリオの 1 つは、受信メッセージ パラメーター (「ID_OF_MESSAGE」および「TEXT_OF_MESSAGE」) の処理と、「ANSWER_TO_ID」および「RESPONSE_MESSAGE」パラメーターを使用した応答の生成を含みます。
ただし、HTTP 200 応答をサーバーに送信すると、すぐにマークが付けられます。サーバー側で配信されたメッセージ。即時応答の生成が不可欠であるため、これにはジレンマが生じます。
これを克服するには、次のことができます。
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
ignore_user_abort() と set_time_limit(0) を設定することで、スクリプトは無期限に実行を続けることができます。 。 ob_* 関数は、応答ヘッダーと本文をすぐに送信します。 die() ステートメントはスクリプトを終了します。これは、set_time_limit(0) の使用時に無限実行を防ぐために必要です。
このテクニックを使用すると、受信リクエストを処理し、応答を送信し、待機せずに PHP スクリプトの処理を続行できます。ブラウザが完全な応答を受信できるようにします。
以上がHTTP 応答を送信した後に PHP コードを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。