0

CSV を読み取る複雑なインポート タスクを実行しようとしています。このインポートは、サーバーがタスクを完了するために使用可能なメモリを使い果たしたことを除いて、正常に機能します。サーバーがこれらの「一口サイズ」セクションを1つずつ処理できるように、ファイルを1000行のチャンクに分割しようとしています。ただし、私の CSplit はファイルを分割しません。私の構文は正しいですか?

ディレクトリが正しいこと、コマンドへのパスが正しいこと、ファイルがそこにあることを確認しましたが、うまくいきません。

前もって感謝します。

function processSplit() {
      chdir('Files');
      $dir = '*';

      foreach (glob($dir) as $file) {
           system(CSPLIT_PATH . " -k -n 4 -f ' " . $file . " ' 1000 '{1000}'");

      }
 }
4

2 に答える 2

1

コマンドラインが正しくありません。あなたが持っている:

system(CSPLIT_PATH . " -k -n 4 -f ' " . $file . " ' 1000 '{1000}'");

次のようにする必要があります。

system(CSPLIT_PATH . " $file -k -n 4 -f ' " . $file . " ' 1000 '{1000}'");

また、-f ' " . $file . " '出力ファイルの前後にスペースを作成しているため、変更します。

于 2012-08-29T15:22:09.407 に答える
0

解決しました。Grzegorz さん、ご協力ありがとうございます。問題は、渡されるファイルの構造と、この関数を使用するときにファイルに空白を含めることができないという事実にありました。preg replaceすべての空白を使用し_て問題を解決しました。

于 2012-08-30T13:24:36.240 に答える