ホームページ  >  記事  >  バックエンド開発  >  HTTP 応答をクライアントに送信した後、PHP の実行を維持するにはどうすればよいですか?

HTTP 応答をクライアントに送信した後、PHP の実行を維持するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-15 04:17:02736ブラウズ

How can I keep PHP execution alive after sending the HTTP response to the client?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。