1

インポート モジュールがあり、タブ区切りの txt ファイルを 1 行ずつ処理する必要があります。問題は、ファイルが 250K 行を超える可能性があることです。MySQL データベースで SELECT および UPDATE または INSERT 操作を行う必要があります。これにより、サーバーで最大 3 ~ 4 時間の作業が発生する可能性があります。処理のどこにいるかを示すステータス バーを配置したいと思います。ファイルの行を処理するときに入力を更新しようとしましたが、ブラウザはそれを実際に出力できず、フリーズしました。処理の状況を出力するにはどうすればよいですか?

4

2 に答える 2

1

そうしないと、ブラウザからサーバーへの接続がタイムアウトするため、これを非同期で行う必要があります。

ファイルの処理の進行状況を保持するために、DB に別のテーブルを作成できます。100 行または 1000 行が処理されるたびに、そのテーブルのレコードを更新できます。

クライアント側では、バックエンドに問い合わせてプログレス テーブルから値を取得することで、javascript のプログレス バーを更新できます。

于 2012-06-29T08:59:22.613 に答える
0

単純な flush() が仕事をするかもしれません:

// ...

$done++
if ( ($done % 1000) == 0 ) {
    print "$done of $total lines processed<br />";
    flush();
}

// ...

Windows サーバーを使用している場合は、ドキュメント ページのコメントを参照してください。いくつかの癖があるようです: http://php.net/manual/en/function.flush.php

于 2012-06-29T09:03:16.600 に答える