Как работать с большими файлами в PHP?

Примерные задачи:
1. Изменить первый символ в файле, не загружая весь файл в память.
2. Убрать первый символ, не загружая весь файл в память.
3. Добавить 1 символ в начало файла, не загружая весь файл в память.

С маленькими файлами всё просто:
//1
file_put_contents($file, $symbol.substr(file_get_contents($file), 1));
//2
file_put_contents($file, substr(file_get_contents($file), 1));
//3
file_put_contents($file, $symbol.file_get_contents($file));

Но проблема в том, что файл большой и загружать его в память не стоит, так как изменять его нужно часто.
  • Вопрос задан
  • 493 просмотра
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Изменить первый символ в файле, не загружая весь файл в память.


читать про fopen, fwrite

Убрать первый символ, не загружая весь файл в память.


открываем файл (стрим), юзаем fseek, отправляем стрим на чтение на запись. То есть нам всеравно придется перезаписать весь файл, но мы это можем сделать через потоки и тогда не надо загружать файл целиком.

Добавить 1 символ в начало файла, не загружая весь файл в память.

Так же как и в предыдущем пункте. Только тут вместо fseek мы сначала добавим в новый поток один символ и потом добавим все из другого потока.

Короче почитайте чего про streams в php.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы