応答送信後の PHP 処理の続行
PHP スクリプトはサーバーからデータを受信し、処理して、応答を生成します。ただし、応答をすぐにサーバーに送信する必要があるが、その後で追加の処理を行う必要があるという問題に直面します。
出力バッファリングと FastCGI を使用した解決策
応答の送信後に PHP が処理を継続できるようにするには、次の解決策を採用できます:
- 有効にするユーザーの中止を無視する:ignore_user_abort(true); (オプション)
- 無制限の時間制限を設定します: set_time_limit(0);
- 出力バッファリングを使用して応答を早めに送信します: ob_start();
- 応答を送信して設定します適切なヘッダー: echo $response;続いて header('Connection: close'); and header('Content-Length: '.ob_get_length());;
- 出力バッファをフラッシュします: ob_end_flush(); @ob_flush(); lush();
- PHP-FPM で実行されている PHP バージョン 5.3.3 以降の場合は、リクエストを終了します: fastcgi_finish_request();
- 追加の処理を続行します。
- スクリプトを終了します: die(); (set_time_limit(0) が使用されている場合は特に重要です)
このアプローチでは、PHP が実行を継続し、必要な応答後の処理を実行できるようにしながら、Web サーバーへの接続が解放されます。
以上が応答を送信した後に PHP 処理を続行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。