Дано: текстовый файл большого размера (от 100 мб например).
Задача: например заменить, удалить, дописать например где нибудь в середине файла.
Вопрос выглядит просто, но до сих пор не нашел изящного решения.
Какие пути решения были предприняты:
- Использовать классические методы работы через file, file_get_contents и т.п.;
- Использовать команду оболочки , например "grep" (хотя это уже не совсем по теме);
- Использовать второй файл в качестве буфера, в который можно формировать новое готовое состояние исправляемой информации.
- работает медленно и съедает очень много памяти - не вариант;
- Не вариант, по той причине, что код может выполняться и на "виндовой" машине. Работает быстро, использовать получается только на удаление строк.
- Файл читаю построчно через feof. Поиск данных проводится более менее с приемлемой скоростью и память не ест как в случае с п.1. Но зато рождает второй большой файл.. и если изменений много и они не последовательны , то опять сам процесс очень долгий по продолжительности
Кто что посоветует, кто сталкивался?