応答後の PHP 処理の続行
即時の応答が必要なリクエストを処理する場合、最初の応答を送信した後も PHP の処理を続行する必要がある場合があります。
スクリプトはサーバーからパラメータを受け取り、応答を生成し、サーバーが処理を続行する前に、メッセージが配信されたとみなします。メッセージをデータベースに保存し、cron ジョブを使用することは解決策になる可能性がありますが、リアルタイム応答には理想的ではありません。
この問題を解決するには、次の PHP 関数を利用できます:
ignore_user_abort(true); // Not required but recommended set_time_limit(0); // No time limit ob_start(); // Handle the request and generate the response 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 // Continue PHP processing after the response has been sent die(); // **Important** to ensure cleanup if set_time_limit(0) is used
これらの関数を利用すると、クライアントに応答を送信し、接続を閉じ、中断されることなく PHP スクリプトの実行を続行できます。これにより、メッセージの非同期処理を有効にしながら、即時応答が可能になります。
以上がクライアントに応答を送信した後、PHP 処理を続行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。