HTTP 応答後の PHP 実行を維持する
PHP が Apache の mod_php として実行される環境では、HTTP 応答後の PHP 実行を維持する際に共通の課題が発生します。 HTTP 応答をクライアントに送信します。この制約は、特定のタイムアウト期間内にアプリケーションにエラー メッセージを報告する必要があることから生じています。
この問題に対処するには、進行中の操作を中断せずにできるだけ早く HTTP 応答を送信することが重要です。効果的な方法の 1 つは、次のコード スニペットを利用することです。
ob_end_clean(); header("Connection: close"); ignore_user_abort(); // optional ob_start(); echo ('Text the user will see'); $size = ob_get_length(); header("Content-Length: $size"); ob_end_flush(); flush(); session_write_close(); // Added per suggestion // Do processing here sleep(30); echo('Text user will never see');
このスニペットは、最初に保留中の出力をフラッシュし、HTTP 接続を閉じるように構成します。ユーザーが開始した中止試行を無視し、コンテンツの長さを指定することにより、HTTP 応答が効果的にディスパッチされます。その後、データベース操作やメール送信などの継続的な処理を実行できます。
このメソッドを採用することで、PHP は完全な HTTP 応答をクライアントに送信し、指定された期間実行を継続することができ、問題を効果的に解決できます。外部アプリケーションによって課されるエラー報告の制限の一部。このアプローチは、時間のかかる操作を事前に設定されたタイムアウトを超えずに実行する必要があるシナリオで特に役立ちます。
以上がHTTP 応答をクライアントに送信した後、PHP の実行を維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。