2016-08-29 11 views
0

サイズが2GBのICSファイルがありますが、そのファイルからicsデータを解析したいのですが、phpがそのような大きなファイルを読み取ることができず、「Out私は "ini_set( 'memory_limit'、 '-1')"を設定しています。 だから、どういうわけか大きなICSファイルを小さなファイルに分割または分割したいのですが、そのような大きなICSファイルからデータを読み取る方法はありますか?PHPが大きなICSファイルを分割または分割する

私はいくつかの小さなファイルがあり、すべて正常に動作しています。他のファイルからデータを抽出できますが、2GBの大きなICSファイルが抽出/解析することが重要です。事前に

おかげ

+0

一度に一読しないでください。 「レコードの終わり」に達するまで行ごとに解析します。あなたはあなたが完全なレコードを読んでいることを知っていて、それを処理することができます。 –

+0

あなたのアイデアは良いと思う。この大きなICSファイルを一行ずつ読むための例をいくつか用意してください。 –

+0

'$ fh = fopen(...); while($ line = fgets($ fh)){... do stuff ...} ' –

答えて

0
Out of memory例外を処理するための

通常の方法はphp.iniファイルにPHPにRAMを割り当てることによってですが、あなたが2GBのファイルを持っているので、あなたのシステムに多くのメモリを持っていない限り、有効なオプションはないthatsの。基本的には、間違ったファイルを読み込もうとしています。ファイル全体を読み込み、ファイルサイズに相当するコストラムの変数に保存するのではなく、作業しているファイルの形式に応じて行またはバイトで解析しました。ここでは、あなたが作業することができる基本的な例です

<?php 
$handle = fopen("fileName", "r"); 
if ($handle) { 
    while (($line = fgets($handle)) !== false) { 
     // process line here 
    } 

    fclose($handle); 
} else { 
    // handle file read error 
} 
?> 

これはあなたに役立ちます。

+0

大きなファイルを読み取るのにもっと多くのRAMが必要です。最終的には、ICSファイルをそれぞれ1000グラムの小さなものに分割して、今は約3000個の大きなファイルを分割しています。とにかく助けてくれてありがとう:) –

関連する問題