Как в 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.

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

Генератор "удобных" паролей

Декабрь 19, 2012 г.

Простому пользователю от пароля хочется двух вещей - надежности и легкости запоминания. В случае произвольно создаваемых паролей, желаемая надежность достигается очень легко (увеличили длину генерируемого пароля или расширили набор символов, из которого ...

Читать

Считаем полное число строк в запросе MySQL, ограниченного LIMIT

Ноябрь 2, 2012 г.

О полезном операторе - SQL_CALC_FOUND_ROWS. Это конструкция просто незаменима для организации постраничного вывода каких либо данных. Все время забываю синтаксис, приходится каждый раз искать. Решил записать в блоге, чтобы уж не терять :). Во всех ...

Читать

Если simplexml "не парсит" атрибуты...

Август 12, 2017 г.

.. то скорее всего, вы ошибаетесь. Рассмотрим следующий пример XML. В документе example.xml содержится запись о валюте и информация о категории товара. Обе записи содержат аттрибуты. [crayon-69aed45aab869191051077/] Выполним чтение и вывод информации ...

Читать

Можно ли вызвать статический метод trait в php, не подключая его к какому то классу?

Май 27, 2025 г.

Если коротко - нельзя. Вызвать какой метод трейта напрямую без подключения его к классу невозможно, т.к. трейты в PHP не являются самостоятельными сущностями, как классы или объекты. Трейт — это механизм "вклейки" кода в класс. Он не компилируется ...

Читать
 

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

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



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

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

  1. А:

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