ホームページ  >  記事  >  バックエンド開発  >  PHP で HTTP 応答を送信し、長時間実行プロセスの実行を継続する方法

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

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-11-16 12:30:03268ブラウズ

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

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