応答送信後の PHP 実行の継続
PHP スクリプトが受信メッセージを受信し、それを処理し、応答を送信するシナリオでは、要求側サーバーでは、最初の応答を送信した後も PHP スクリプトの実行を継続する必要があります。通常、サーバーは HTTP 200 応答の受信時にメッセージを配信済みとしてマークするため、これは困難になります。
データベース ストレージと Cron ジョブを回避する
メッセージをデータベースを使用し、cron ジョブに依存する場合、より即時の解決策があります。これには、HTTP 200 応答の送信と、PHP スクリプトの実行の続行が含まれます。
PHP スクリプトの実装
このソリューションを実装するには、PHP スクリプトで次の手順に従います。
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
このコード シーケンスにより、スクリプトは応答を送信できますが、PHP プロセスは実行を続けます。必要に応じて、追加の処理やタスクを実行したり、別の応答を送信したりできます。最後に die() を呼び出してスクリプトを終了し、リソースを解放することが重要です。
以上がHTTP 応答を送信した後、PHP スクリプトの実行を続行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。