Как дописать строку в конец файла
Короткий ответ
Передайте file_put_contents() флаг FILE_APPEND:
<?php
$file = sys_get_temp_dir() . '/recipe-append.txt';
file_put_contents($file, "first\n");
file_put_contents($file, "second\n", FILE_APPEND);
echo file_get_contents($file);Результат:
first
secondНесколько процессов
Если в файл пишут одновременно несколько запросов, добавьте блокировку:
<?php
$file = sys_get_temp_dir() . '/recipe-append.txt';
file_put_contents($file, '');
foreach (['a', 'b', 'c'] as $line) {
file_put_contents($file, $line . "\n", FILE_APPEND | LOCK_EX);
}
echo count(file($file));Результат:
3Без флага файл стирается
Обычный вызов file_put_contents() заменяет содержимое целиком — проверьте, что флаг на месте.
Функции из этого ответа
- file_put_contents — Записывает данные в файл.
- fopen — Открывает файл для чтения или записи по частям.
- fwrite — Записывает строку в открытый файл.