Для того чтобы сохранить данные в файл, есть специальная функция в PHP file_put_contents(). С её помощью можно записать информацию в файл разными способами. Рассмотрим все примеры file_put_contents PHP.
Приведенный способ очень прост. Он не раскрывает всех возможностей функции и подходит только для демонстрации её работы.
Ведь не стоит забывать о том, что подобный метод записи может дать сбой в условиях работающего сайта. Так как к файлу может поступать запрос на чтение и запись одновременно. Чтобы избежать подобных казусов, нужно предоставить нашему скрипту эксклюзивный доступ к файлу. Для этого следует использовать флажок блокировки LOCK_EX.
Теперь с использованием LOCK_EX все запросы будут обрабатываться поочередно.
В приведенных выше примерах, функция file_put_contents() форматирует файл прежде, чем записать в него новую информацию. Так же можно не удаляя предыдущие данные, сохранить новые в конец, применив флаг FILE_APPEND.
Если запись прошла удачно, функция возвращает значение в виде размера файла в байтах, а в случае неудачи она выдаст FALSE. Зная эту информацию, можно сделать проверку, как указано в примере выше.
Содержание
- Сохранение массивов в файл при помощи file_put_contents
- Запись в файл при помощи fopen(), fwrite(), fclose()
- Описание
- Список параметров
- Возвращаемые значения
- Примеры
- Список изменений
- Примечания
- Смотрите также
- 1 ответ
Сохранение массивов в файл при помощи file_put_contents
Для записи массивов в файл можно использовать эту же функцию, но перед этим массив нужно сериализовать. Другими словами, преобразовать его в текст. А после записи десериализовать все обратно в массив.
$mass=array(1,2,3); // Это массив.
$info=serialize($mass); // Здесь происходит сериализация массива.
file_put_contents($document,$info); // Запись его в файл.
$info=file_get_contents($document); // Чтение файла.
$mass=unserialize($info); // Десериализация данных файла для возвращения массива в исходное состояние.
Запись в файл при помощи fopen(), fwrite(), fclose()
Есть и другой вариант записи данных посредством PHP — с использованием функций fopen(), fwrite(), fclose(). Они аналогичны PHP file_put_contents(), но позволяют более детально подойти к написанию скрипта выполняющего различные операций с файлом.
- fopen() — открытие файла;
- fwrite() — чтение файла;
- fclose() — закрытие файла;
При использовании функции, fopen() нужно указать режим её работы
В этом примере функция fopen() с режимом “W” — (writting) может только записывать данные в файл. Поэтому его содержимое будет удалено. А если файла с таким именем нет, то скрипт создаст его.
- В случае, если нужно дописать информацию, сохранив при этом предыдущее содержимое, то при открытии нужно использовать режим “W+”.
$file = fopen($document, «w+»); // Открытие файла.
Затем идёт запись в файл:
- fwrite($file, $info); // Запись в файл.
- fclose($file); // После записи закрываем файл.
file_put_contents — Пишет строку в файл
Описание
Функция идентична последовательным успешным вызовам функций fopen() , fwrite() и fclose() .
Если filename не существует, файл будет создан. Иначе, существующий файл будет перезаписан, за исключением случая, если указан флаг FILE_APPEND .
Список параметров
Путь к записываемому файлу.
Записываемые данные. Может быть string , array или ресурсом stream .
Если data является ресурсом stream , оставшийся буфер этого потока будет скопирован в указанный файл. Это похоже на использование функции stream_copy_to_stream() .
Также вы можете передать одномерный массив в качестве параметра data . Это будет эквивалентно вызову file_put_contents($filename, implode(», $array)).
Значением параметра flags может быть любая комбинация следующих флагов, соединенных бинарным оператором ИЛИ (|).
Доступные флаги
Корректный ресурс контекста, созданный с помощью функции stream_context_create() .
Возвращаемые значения
Функция возвращает количество записанных байт в файл, или FALSE в случае ошибки.
Эта функция может возвращать как boolean FALSE , так и не-boolean значение, которое приводится к FALSE . За более подробной информацией обратитесь к разделу Булев тип. Используйте оператор === для проверки значения, возвращаемого этой функцией.
Примеры
Пример #1 Пример простого использования
Пример #2 Использование флагов
Список изменений
Примечания
Замечание: Эта функция безопасна для обработки данных в двоичной форме.
Для этой функции вы можете использовать URL в качестве имени файла, если была включена опция fopen wrappers. Смотрите более подробную информацию об определении имени файла в описании функции fopen() . Смотрите также список поддерживаемых оберток URL, их возможности, замечания по использованию и список предопределенных констант в Поддерживаемые протоколы и обработчики (wrappers).
Смотрите также
- fopen() — Открывает файл или URL
- fwrite() — Бинарно-безопасная запись в файл
- file_get_contents() — Читает содержимое файла в строку
- stream_context_create() — Создаёт контекст потока
file_put_contents перетирает файл. Как используя file_put_contents записывать в файл новую строку?
1 ответ
file_put_contents() — функция для записи данных в файл. Фунция может принимать 3 параметра, из которых первые два являются обязательными — это имя файла и строка, которая будет записана в файл. Третий необязательный параметр — флаги.
Пример использования функции:
В результате выполнения этого кода в файл /tmp/example.log будет записана строка «test string». Если файла не существует, то файл будет создан автоматически.
Теперь, чтобы повторные вызовы file_put_contents не удаляли содержимое файла, нужно установить 3-й параметр FILE_APPEND. После этого данные будут добавляться в конец файла:
Ещё полезным может оказаться флаг LOCK_EX. Его установка будет гарантировать то, что другие потоки не будут писать в файл в то время, пока вы пишете в файл. Поэтому для записи логов в файл рекомендую делать так:
Вот так я использую file_put_contents для дебага:
Источник: