2009-07-29 8 views
0

私は現在クラスStatusを持っています。私は様々なタスクを実行しています。例えば、画像をアップロードするときは$statusHandler = new Status(121)私はそれをサイズ変更、私は$statusHandler = new Status(122)を呼び出します。 すべてのstatusIDは、データベースに格納されている特定のテキストに対応します。 クラスstatusはテキストを取得し、$_SESSIONに格納します。 現在のステータスを返す別のファイルgetstatus.phpがあります。 私の考えは、(jquery経由で)ajaxを使って500millececonds毎にgetstatus.phpに電話をかけ、そのテキストをウェブページに追加することでした。 このようにして、ユーザーはバックグラウンドで何が行われているかについての(ほぼ)リアルタイムのデータを取得します。php/ajaxを使用して準リアルタイムデータを表示する

問題は、私が最後の状態になっているように見えるということです。 あまりにも速く起こったことの結果だと思ったので、new Statusを呼び出した後にsleepを実行しました。これはページ全体の出力を遅らせました。すなわち、コードが実行されるまで、PHPはのいずれの文字もというテキストを出力しませんでした。 PHPはすべてのコードの実行が終了した後にのみデータをエコーし​​ますか、それともリアルタイムで行単位で処理しますか? もしそうなら、私は自分が望むものを達成できるように誰でも回避策を提供できますか?

ありがとうございました。

答えて

1

デフォルトのセッションの実装(フラットファイル)のsession_start()が呼び出されたセッション・ファイルにファイルロックを設定します。このロックは、セッション機構がシャットダウンするまで、すなわちスクリプトが終了するか、またはsession_write_close()が実行されるまで解放されない。同じセッションにアクセスしたい別のリクエスト/スレッドは、このロックが解放されるまで待たなければなりません。

+0

私がsession_write_close()を書くと、ヘッダーはすでに送信されているので、私は再びそれを開始できません!これに関する助け? –