2012-01-23 11 views
0

大きなCSVファイルを解析し、そのデータをDBに保存する前にいくつかの操作を実行しようとしていますが、メモリ制限に達したことを示しています。次回のスクリプトを実行してその時点から再開できるように、CSVファイルの現在の行番号/ポインタを保存する関数を実行する方法はありますか?"メモリ不足"の致命的なエラーが発生した後に関数を実行できますか?

+1

私のベスト・ベットは、csvファイルを小さなチャンクに入れて、それらを個別に解析することです。 –

答えて

3

いいえ、ありません。あなたは(たとえば)は、ファイルのライン・バイ・ラインを処理する必要があり

$f = fopen($csv, 'rb'); 
while ($row = fgetcsv($f)) { 
    // Do something with line 
    // for example push it into a db 
} 
fclose($f); 

あなただけあなたが現在必要なものを、メモリに持ってこの方法です。

+0

便宜のために 'fgets'の代わりに[' fgetcsv'](http://php.net/manual/en/function.fgetcsv.php)を使用してください – mrlee

+0

更新、ありがとうございます。 – KingCrunch

+0

gotcha、thx KingCrunch。 – blacktie24

関連する問題