HTTP 応答送信後の PHP 操作の実行
PHP 5.2 では、mod_php として実行しているときに HTTP 応答を送信すると、長時間実行されているデータベースが中断される可能性がありますリクエストと電子メールの処理。この問題に対処するには、PHP が完全な HTTP 応答をクライアントに送信し、さらに一定期間操作の実行を継続できるようにする手法を利用できます。
次のスニペットはこれを実現します。
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(); // Strange behaviour, will not work flush(); // Unless both are called ! session_write_close(); // Added a line suggested in the comment // Do processing here sleep(30); echo('Text user will never see');
実行すると、スクリプトはすぐに完全な HTTP 応答をクライアントに送信します。その後、バックグラウンドでデータベース要求と電子メールの処理が開始されます。これには最大で 1 分かかる場合があります。応答が送信されると、ユーザーの対話は中断されることに注意してください。
以上がHTTP 応答を送信した後に PHP 操作を実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。