CakePHPで書かれたバックエンドデータ管理コンソールで、ユーザーはいくつかの階層データを管理できます。ユーザーがデータを変更するたびに、サイトのフロントエンドで使用されているデータファイル(この場合はJSON)を再生成します。CakePHPでページ出力後に長時間実行するコードを続行
リビルドには時間がかかることがあります。バックエンドUIを少し敏感にしたいと思います。私の考えは、新しいページ(「あなたの変更が保存されました」ページ)がユーザにレンダリングされた後にJSONの再構築を行うことです。 afterFilter()
のコールバックにapp_controller.php
というコードがありますが、JSONの再構築が完了するまで、ページは実際にはブラウザでレンダリングされません。
HTTPヘッダーをConnection: Close
に送信したり、出力バッファをフラッシュして処理中にサーバーが終了したことをブラウザに伝えるようなプレーンバニラPHPのコード例が見つかりました。 CakePHPの構造とそれ自身の出力バッファリングで動作します。
私が望むのは、ユーザーのビューを完全にレンダリングし、ユーザーがページを読み込んだ後、バックグラウンドでJSONの再構築を続行する方法です。
状況に影響を与える可能性のある状況や設定がある可能性があることを認識していますので、特定のアプリケーションについて質問がある場合はお知らせください。
ありがとうございます。
私はむしろ、 "UIスレッド"をピギーバックするよりも、このタスクをバックグラウンドデーモン/ cronジョブ/キューワーカーに委譲することをお勧めします。 – deceze
それがオプションだったら、私は間違いなくそれをやるでしょう。残念ながらそうではありません。 – theraccoonbear