サイズが を超えるテキスト ファイルはほとんどありません30MB
。
このような巨大なテキスト ファイルを PHP から読み取るにはどうすればよいですか?
すべてのデータを同時に処理する必要がない限り、データを分割して読み取ることができます。バイナリ ファイルの例:
<?php
$handle = fopen("/foo/bar/somefile", "rb");
$contents = '';
while (!feof($handle)) {
$block = fread($handle, 8192);
do_something_with_block($block);
}
fclose($handle);
?>
上記の例では、マルチバイト エンコーディングが壊れる可能性があります ( Ǿ
UTF-8 などで 8192 バイトの境界をまたがるマルチバイト文字がある場合)。そのため、意味のあるエンドライン (テキストなど) を持つファイルの場合は、次のようにします。
<?php
$handle = fopen("/foo/bar/somefile", "rb");
$contents = '';
while (!feof($handle)) {
$line = fgets($handle);
do_something_with_line($line);
}
fclose($handle);
?>