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

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

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

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

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

Читать

PHP код для калькулятора боёв Dragons of Atlantis

Июль 3, 2012 г.

Выкладываю php код, по просьбе Blagtoof. Забавно, что это кому то может быть нужно. :) А мне не жалко. Забросил по понятным причинам саму игру. Скачать как файл (download php code as text file). [crayon-6902add44e9dc972189467/]

Читать

Как пользоваться flock()?

Март 24, 2017 г.

Если вы решаете задачу конкурентного доступа к файлу (или какому то другому ресурсу) в PHP, и решили использовать flock() для этой цели, то вам понадобится верно представлять как работает механизм блокировки. Представим себе, что есть разные программные ...

Читать

Определение версии браузера - PHP или javascript?

Май 17, 2011 г.

Хорошо если ваш сайт работает во всех, или почти во всех браузерах так, как вы того хотите. Все меняется, выходят новые версии, появляются новые возможности, и глупо их не использовать, в угоду "старичкам". Года 1,5 назад IE 6.0 (судя по статистике посещений ...

Читать
 

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

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



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

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

  1. А:

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