2009-04-29 7 views
4

私はページのバックグラウンドで実行したいプロセスがあります。プロセスが実行するには時間がかかりますが、数分と言えます。AJAX(prototype/php)がスクリプト実行中に部分的なステータス更新を取得する

ページからプロセスを開始するボタンをクリックして少し待ってから終了すると、プロセスが正常に実行されたことを通知するページ更新ができるように設定しました。私はプロトタイプとPHPでこれをやっています。

私がしたいことは、プロセスの実行中にステータスの更新があることです。それで、これまでに処理されたレコードの数を知ることができるページを更新したり、ステータスバーなどを更新することができます。

これは可能ですか?私は巨大なJSの達人ではないし、私は既に説明した基本的な機能を実行することができますが、私は幸運を持ってグーグルを見たり、見ていないので、この少し余分なビットを行うためにそれを拡張することが可能かどうか疑問に思っていたdocs。

答えて

2

ちょうどPHPを使用すると、ポーリングがかなり終わります。長時間実行されているプロセスをバックグラウンドで起動する必要があります。たとえば、進行状況をファイルのデータベースに書き込む必要があります。

ブラウザは、x秒ごとに別のPHPスクリプトを呼び出すことができます。このスクリプトは、このステータスを返します。

ポーリングがうまくいっていますが、これはPHPの問題です。

+0

したがって、プロセスをフォークしてから、プロセスがファイル/ dbを更新するようにしてください。あなたは私が抱えているのはPHPだと言いますが、私はこの特定のモジュールをPythonやPerlなどで書くことができますが、ポーリングを必要としないオプションは何でしょうか?ちょっと興味があるんだけど。 –

+0

実際にはCGI/mod_phpなどを実行している場合はforkしないでください! 新しいプロセスを開始するだけです。 (技術的にはフォークもしているが、その区別を指摘したかった)。 – Evert

関連する問題