PHP: чтение определенных строк в большом файле (без чтения строки)

У меня есть эта файловая структура:

line1 (number or aa short string) line2 (can be several MB of text) ; line1 line2 ; line1 line2 ; ... 

Общий размер файлов превышает 100 МБ, поэтому чтение строк за строкой каждый раз довольно медленно. Я хочу читать только «line1» каждого блока и пропустить все «line2». Или просто прочитайте строку, для которой я знаю полотно. Есть ли способ, которым я могу это сделать с помощью php? Стандартные методы чтения строк берут строки в память и не настолько эффективны с этой структурой.

(Я знаю, что структура базы данных будет намного лучше использовать, но это исследование, которое я действительно хочу получить.)

Использование splfileobject

  • нет необходимости читать все строки 1 на 1

  • может «прыгать» на нужную линию

В случае, если вы знаете номер строки:

 //lets say you need line 4 $myLine = 4 ; $file = new SplFileObject('bigFile.txt'); //this is zero based so need to subtract 1 $file->seek($myLine-1); //now print the line echo $file->current(); 

проверить: http://www.php.net/manual/en/splfileobject.seek.php