0

PHP バッチ チュートリアルについて検索してきましたが、これまでのところ何もありません。

MS Excel からデータをインポートするタスクが与えられました。Excel データごとに、PHP によって処理され、mysql 行が作成されます。

1 つの Excel データの複雑さのため、PHP が一度に 1 行ずつ処理し、プログレス バーを表示するバッチ システムを構築したいと考えています。次に、タイムアウトを防止します (60 秒に設定されています)。

これに関するガイドライン/例/などはありますか? ありがとう

4

3 に答える 3

0

通常、CSV の場合は http://php.net/manual/es/function.fgetcsv.php を使用fgetcsvます。これにより、一度に 1 行ずつ実行できます。

進行状況バーについては、処理されたすべての行とブラウザーからのAJAX要求に対してJSONファイルを更新して、そのファイルを読み取り、javascript を使用してフロントエンドのクライアントの進行状況バーを表示できます。

于 2013-02-12T03:47:23.237 に答える
0

タイムアウトを防ぐには、 set_time_limit(0);を入れる必要があります。コードの最初で、ブラウザがタイムアウトしないようにする場合は、データをエコーし​​てブラウザ用にフラッシュする必要があります

于 2013-02-12T03:48:28.277 に答える
0

あなたが何を望んでいるのか正確にはわかりませんが、試してみます。私の理解では、PHP プログラムの実行中にバッチ ファイルでプログレス バーを刺激する必要があります。

まず最初に、自分がやりたいことをするために必要な細胞の数を知る必要があります。これが可能である限り (そして、数値をテキスト ファイルにエクスポートできる限り)、可能であるはずです。

次のメソッドでは、処理する必要があるセルの量を含めるために実行時に .txt ファイルが必要になります (できない場合は、この回答全体をスキップする必要があります)。次に、既に処理されたセルの量を含む別のテキスト ファイルをスキャンします (できれば、それがファイル内の唯一のものです。そうでない場合、これは毛むくじゃらになります)。

ライフスタイルを考える前に私と私の話を知っているので、私はばかで、私が達成できることを過大評価しているため、この回答はおそらく提出されないでしょう.

だから、これ以上苦労せずに...

@echo off & setlocal enabledelayedexpansion
for /f %%i in (file1) do set num1=%%i
set /a num1*=100
:update
if not exist file2 goto update
for /f %%i in (file2) do (
    if %%i equ %prog% goto update
    set prog=%%i
)
set /a prog*=100
set /a stat=%prog%/%num1%
cls
echo %stat% % done.
goto update

うーん、思ったよりうまくいきました。この回答は公開される可能性があります。注意すべきことの 1 つは、file1and file2(2 回出現する) を適切なファイルのファイル パスに置き換える必要があることです。file1には、そこにあったものを何でもするために必要なセルの量が含まれている必要があります。file2 には、処理したセルの量が更新されている必要があります。

残念ながら、私はこれをテストしませんでした。エラーが発生するか、何らかの改善が行われると確信しています。これは、ハード コピーではなく、テンプレートとして他のアイデアを刺激するために作成されました。

于 2013-02-12T06:41:18.590 に答える