ファイルを一行ずつ読みたいのですが、メモリに完全に読み込むことはできません。
ファイルのサイズが大きすぎてメモリ上で開くことができず、メモリ上で開こうとするといつもメモリ不足のエラーが発生します。
ファイルのサイズは1GBです。
ファイルを一行ずつ読むには,fgets()
関数を使います。
$handle = fopen("inputfile.txt", "r");
if ($handle) {
while (($line = fgets($handle)) !== false) {
// process the line read.
}
fclose($handle);
} else {
// error opening the file.
}
バッファリング技術を使ってファイルを読み取る。
$filename = "test.txt";
$source_file = fopen( $filename, "r" ) or die("Couldn't open $filename");
while (!feof($source_file)) {
$buffer = fread($source_file, 4096); // use a buffer of 4KB
$buffer = str_replace($old,$new,$buffer);
///
}