Я хочу прочитати файл рядок за рядком, але не завантажуючи його повністю в пам'ять.
Мій файл занадто великий, щоб відкрити його в пам'яті, а при спробі це зробити я завжди отримую помилку виходу з пам'яті.
Розмір файлу 1 Гб.
Для построкового читання файлу можна використовувати функцію fgets()
:
$handle = fopen("inputfile.txt", "r");
if ($handle) {
while (($line = fgets($handle)) !== false) {
// process the line read.
}
fclose($handle);
} else {
// error opening the file.
}
if ($file = fopen("file.txt", "r")) {
while(!feof($file)) {
$line = fgets($file);
# do same stuff with the $line
}
fclose($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);
///
}