Как в PHP записать данные в файл?

Рассмотрим несколько способов сохранения данных в файл.

Функция file_put_contents() для записи в файл

Функция появилась в 5й версии PHP. Это самый простой, наверное, способ записать скалярные данные (строку или текст) в файл.

Этот пример очень простой и не использует всех параметров функции. Так как PHP используется типично для создания сайтов, то нужно помнить о параллельных запросах к сайту. Т.е. может возникнуть ситуация одновременной записи данных, чтения данных во время записи и т.п. коллизии. Воспользуемся флажком блокировки — LOCK_EX, который обеспечит нам эксклюзивный доступ к файлу на время записи:

В показанных примерах мы полностью перезаписывали файл, очищая его предыдущее содержимое. Чтобы добавить данные в конец файла, используется флаг — FILE_APPEND.

Функция возвращает кол-во записанных в файл байт или же FALSE в случае не удачи.

Как записать в файл массив или объект?

Для этого можно воспользоваться той же самой функцией записи текста, но предварительно массив или объект должны быть сериализованы, т.е. преобразованы в текстовый вид. После загрузки данных необходимо будет выполнить обратную операцию — восстановить массив из строки — десериализовать.

Если вам интересны нюансы сериализации — читайте статью по ссылке.

Функция file_put_contents() идентична последовательному вызову функций — fopen(), fwrite(), fclose(). Рассмотрим их как второй вариант записи в файл на PHP.

Как создать файл и записать в него данные в PHP

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

Режим «w» — (writting), позволит только записывать в файл. Если файл не существует, то он будет создан, если он уже есть — то он будет обнулен.

Если вам не нужно очищать содержимое файла, то используйте режим «w+», который будет аналогичен использованию флага FILE_APPEND. При этом дескриптор позволит как запись так и чтение данных из файла.

Итак, дескриптор файла создан. Теперь запишем данные.

Мы можем продолжить использовать открытый дескриптор и далее, дописывая данные. При окончании работы скрипта — он автоматически будет освобожден. Можно освободить его и раньше.

Что насчет монопольного доступа к файлу? Аналогично действию флага LOCK_EX мы можем выполнить блокировку следующим образом:

Чтение данных из файла выполняет функция fread();

Работать с функциями file_put_contents()/file_get_contents() — проще, но они не дают полного контроля над операциями чтения/записи. Дополнительную инфу полезно будет почитать в мануале PHP.

Мало букафф? Читайте есчо !

Функция для локализации изображения при экспорте статьи

Февраль 29, 2016 г.

За многолетнюю практику работы с Drupal, я накопил целую библиотеку вспомогательных функций. Функция, описываемая в этой статье, используется для копирования ...

Читать

PHP проверка адреса электронной почты, email

Ноябрь 10, 2015 г.

Серию валидаторов пополняю функцией проверки введенного email на соответствие формальным требованиям. По стандарту RFC822 Если есть необходимость соблюсти все требования, которые упомянуты в громоздкой спецификации RFC822, то лучший путь - воспользоваться ...

Читать

Грузим картинку в поле image в Drupal

Март 1, 2016 г.

Из кода программы на PHP мы попытаемся загрузить картинку в публикацию сайта на Drupal 7. Здесь описана логика и показан код всех операций. Постановка задачи Эта задача является частью задачи импорта статьи, извлеченной из HTML кода веб-страницы ...

Читать

Восстанавливаем объект из состояния __PHP_Incomplete_Class_Name

Декабрь 13, 2014 г.

Объект класса "__PHP_Incomplete_Class" с дополнительным свойством __PHP_Incomplete_Class_Name => 'имя класса' появляется, когда PHP не удается найти объявление класса при операции десериализации объекта. К примеру, такое может происходить при хранении ...

Читать
 

Комментарии к «Как в PHP записать данные в файл?»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий:

Много комментариев в “Как в PHP записать данные в файл?”

  1. А:

    Уберите эти дурацкие движущиеся фигурки на заднем фоне! Из за них сайт тормозит пипец как.