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

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

Загрузка-выгрузка в формате excel из PHP

Август 25, 2017 г.

Встроенные библиотеки PHP не позволяют работать с форматами данных популярного табличного процессора Excel. За исключением текстового формата CSV (см. ...

Читать

Импортируем изображения через wysiwyg

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

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

Читать

Работаем с датами широкого диапазона в PHP

Январь 28, 2016 г.

Многие не задумываются при работе в PHP со стандартными функциями даты-времени о диапазоне их применимости (date(), time(), mktime() и т.п). Так мы можем скоро столкнуться с проблемой, подобная которой случалась уже раньше - "ошибка 2000". Я прекрасно ...

Читать

Досрочный выход, остановка цикла в PHP

Ноябрь 11, 2015 г.

Досрочно закончить исполнение цикла в PHP можно разными способами. Хотя конструкций циклов в PHP много, но принципы одинаковые. Для примера будем использовать цикл for. [crayon-6a40e77237be0231593434/] Цикл досрочно завершится с помощью оператора break ...

Читать
 

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

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



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

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

  1. А:

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