1

CSV ファイルから 4000 行をインポートしています。ページ 1 は、PROCESS ボタンを使用してサーバー上の CSV ファイルを表示します。 Onclickボタンをクリックすると、 JQuery Ajaxを使用して、インポートを行うために必要なPHP コードを呼び出します。関連するチェック、レコードの更新、レコードの挿入などを行った後、インポート プロセス全体に約 30 秒から 1 分かかります。

私がやろうとしているのは、php コードの処理中にこのインポートの進行状況を表示することです。すなわち:

Total records to import: 4000
Total users imported: 20 [div id=usersImported - this number dynamically increments while importing]
Total users updated: 30 [div id=usersUpdated - same here re incrementing]
Etc..

DIVs (usersImported and usersUpdated)PHPコードから更新しようとしたため、正しい質問が何であるかわかりません-これを機能させることができませんでした。これはスクリプトコードをブラウザに返すだけで、実際には実行しません

また、更新または挿入した後、php でエコーを実行しようとしました。

if( txt.match( "usersImported" ).length > 0 ) { ..先行番号付きの update div innerHTML コードを使用..

私が試したにもかかわらず、phpが処理中にフラッシュされていないため、これは機能しません。またはob_flush();flush();phpコード全体が完了すると、成功はajaxでのみ実行されるためですか? JQuery while: コマンドはありますか?

だから私が推測する本当の質問は、これを行う正しい方法は何ですか? PHP から DIV を更新するか、または $ajax から PHP エコーに基づいて div を更新しますか? これはプログレス バーの更新に似ていますが、処理時間中に発生したことに基づいて特定の div を更新したい点が異なります。

基本的な例または実際のサンプルへのリンクをいただければ幸いです。

4

2 に答える 2

0

httpを閉じていないため、ajaxが起動しないと思います。それは座って、さらに来るのを待ちます。

ストリームが必要な場合、またはサーバーで作業を分割する必要がある場合。

アップデーターがパーセンテージを静的パブリック ファイルに書き込み、クライアントが読み取って、そのファイルをポーリングし続けるようにするのが汚い修正です。(ランダム化されたクエリ文字列を追加して、パス キャッシュを取得します)。

于 2012-05-15T08:58:05.243 に答える
0

直接的な方法はありません。filePHP プロセスのステータスをまたはのような外部ソースに書き込みdatabase、クライアント側で特定の時間後にそのステータスを読み取ることができます。

この記事があなたに方向性を与えることを願っています:

于 2012-05-15T09:01:09.627 に答える