0

そのため、ID のリストに対して一連の SQL クエリを実行する php ファイルがあります。このファイルの実行には時間がかかる場合があります。

それが実行されている間、進行状況バーが必要です。

実行中のファイルが、一連のクエリごとに完了率を示すセッション変数を更新するようにしています。次に、フロントエンドで、セッション変数の値を読み取り、それを返す別のファイルへの ajax 呼び出しを行っています。次に、返されたパーセンテージでプログレスバーの塗りつぶしの幅を更新します。

問題: すべてのクエリが完全に完了するまで、プログレス バーが更新されません。そのため、進行状況バーが数秒間 0% で表示された後、突然 100% にジャンプします。スクリプトが完了するまでセッションがロックされているようです。session_write_close() を使用してみましたが、動作しません。

ありがとう。

4

2 に答える 2

1

この方法の問題は、実行時にセッション変数が保存されないことです。変数をセッションに保存する前に、スクリプトが完了するまで待機します。1 つの解決策は、進行状況を一時的にデータベースまたはファイルに保存し、AJAX を使用して定期的にデータにアクセスすることです。

もう 1 つの解決策は、 Google の V8 エンジン (Node.js)のようなサーバー側の JavaScript を使用し、進行状況に基づいてイベントを発生させることです。その後、発生した JavaScript イベントに基づいてページが更新されます。

于 2013-08-20T15:44:10.873 に答える
1

同様の問題があり、セッション ソリューションが機能しませんでした。私の解決策は、現在のステータスを一時的な .txt ファイルに書き込み、そのファイルを ajax 呼び出しで読み取ることでした。

于 2013-08-20T15:08:42.413 に答える