php Считать и удалить певую строку файла, не загружая его в память

Необходимо считать первую строку из файла и удалить ее, не загружая файл в память, т.к. он весит более 20гб. Как это можно реализовать?


Ответы (1 шт):

Автор решения: Gelloiss

Написал вариант, который работает если строки в файле уникальные, что в моем случае подходит. Но это не совсем правильный ответ. Буду рад, если кто-то даст верный ответ.

<?php
$fileName = 'c:\php\test.txt';

$fd = fopen($fileName, 'a+');
$str = fgets($fd);
var_dump($str);

$tm = fopen($tmpname = $fileName.'_temp', 'w+');
while (($line = fgets($fd)) !== false) {
  if($str == $line) continue;
  fwrite($tm, $line);
}
fclose($fd);
fclose($tm);
rename($tmpname, $fileName);
→ Ссылка