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