Try SplFileObject
echo memory_get_usage(), PHP_EOL; // 333200
$file = new SplFileObject('bible.txt'); // 996kb
$file->seek(5000); // jump to line 5000 (zero-based)
echo $file->current(), PHP_EOL; // output current line
echo memory_get_usage(), PHP_EOL; // 342984 vs 3319864 when using file()
For outputting the current line, you can either use current()
or just echo $file
. I find it clearer to use the method though. You can also use fgets()
, but that would get the next line.
Of course, you only need the middle three lines. I’ve added the memory_get_usage
calls just to prove this approach does eat almost no memory.