Удалить первые X строк из файла PHP

Мне интересно, знает ли кто-нибудь, как это можно сделать в PHP. Я запускаю скрипт, который включает в себя открытие файла, получение первых 1000 строк, выполнение некоторых действий с этими строками, затем файл php открывает другой экземпляр самого себя, чтобы взять следующую тысячу строк и так далее, пока не достигнет конца файла . Я использую splfileobject, чтобы я мог искать определенную строку, что позволяет мне довольно хорошо разбить это на 1000 фрагментов строк. Самая большая проблема, с которой я сталкиваюсь, связана с производительностью. Я имею дело с файлами, содержащими более 10 000 000 строк, и хотя первые 10 000 строк или около того выполняются довольно быстро, после этого момента происходит огромное экспоненциальное замедление, которое, я думаю, просто нужно искать в этой точке.

Что я хотел бы сделать, так это прочитать первую тысячу строк, а затем просто удалить их из файла, чтобы мой скрипт всегда читал первую тысячу строк. Есть ли способ сделать это без чтения остальной части файла в память. Другие решения, которые я видел, включают чтение каждой строки в массив, а затем избавление от первых X записей, но с десятью миллионами строк, которые съедают слишком много памяти и времени.

Если у кого-то есть решение или другие предложения, которые могут ускорить работу, мы будем очень благодарны.

7
задан Eric Strom 20 September 2012 в 17:14
поделиться