PHP で HTTP 応答を送信し、長時間実行プロセスの実行を継続する方法

Mary-Kate Olsen
リリース: 2024-11-16 12:30:03
オリジナル
267 人が閲覧しました

How to Send HTTP Responses in PHP and Continue Execution for Long-Running Processes?

PHP での HTTP 応答の送信と実行の継続

Web アプリケーションのタイムアウトを超える時間のかかる操作に直面した場合、開発者は多くの場合、HTTP を超えて PHP の実行を継続するソリューションを探します。応答配信。この特定のケースでの課題は、PHP が完全な HTTP 応答を迅速に送信できるようにすると同時に、データベースと電子メールの処理を 1 分間の所定の時間枠内で開始および完了できるようにすることです。

最も簡単な方法は、ob_end_flush( ) と flash() は戦略的に機能します。出力バッファリング プロセスを終了し、ユーザーに表示されるテキストとともに HTTP ヘッダーを解放することにより、スクリプトはクライアントに応答の完了を効果的に通知します。

このアプローチを示すサンプル コード スニペットは次のとおりです。

ob_end_clean();
header("Connection: close");
ignore_user_abort(); // Disable abort
ob_start();
echo ('Success message for the user');
$size = ob_get_length();
header("Content-Length: $size");
ob_end_flush(); // Flush the initial content
flush();            // Ensure proper flushing
session_write_close(); 
// Delegate time-consuming tasks here
sleep(30);
echo('Tasks completed after 30 seconds');
ログイン後にコピー

このアプローチでは、スクリプトはクライアントに操作の成功を通知し、アプリケーションをタイムアウトさせることなく、後続の時間のかかるタスクを開始します。

以上がPHP で HTTP 応答を送信し、長時間実行プロセスの実行を継続する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート