Меню Закрыть

File put contents дописать

Содержание

Для того чтобы сохранить данные в файл, есть специальная функция в PHP file_put_contents(). С её помощью можно записать информацию в файл разными способами. Рассмотрим все примеры file_put_contents PHP.

Приведенный способ очень прост. Он не раскрывает всех возможностей функции и подходит только для демонстрации её работы.

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

Теперь с использованием LOCK_EX все запросы будут обрабатываться поочередно.

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

Если запись прошла удачно, функция возвращает значение в виде размера файла в байтах, а в случае неудачи она выдаст FALSE. Зная эту информацию, можно сделать проверку, как указано в примере выше.

Сохранение массивов в файл при помощи 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() — закрытие файла;
Читайте также:  Nvidia geforce gt 710 тест в играх

При использовании функции, 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 может быть любая комбинация следующих флагов, соединенных бинарным оператором ИЛИ (|).

Доступные флаги

Флаг Описание
FILE_USE_INCLUDE_PATH Ищет filename в подключаемых директориях. Подробнее смотрите директиву include_path.
FILE_APPEND Если файл filename уже существует, данные будут дописаны в конец файла вместо того, чтобы его перезаписать.
LOCK_EX Получить эксклюзивную блокировку на файл на время записи.

Корректный ресурс контекста, созданный с помощью функции stream_context_create() .

Возвращаемые значения

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

Эта функция может возвращать как boolean FALSE , так и не-boolean значение, которое приводится к FALSE . За более подробной информацией обратитесь к разделу Булев тип. Используйте оператор === для проверки значения, возвращаемого этой функцией.

Читайте также:  Сколько человек играет в майнкрафт

Примеры

Пример #1 Пример простого использования

Пример #2 Использование флагов

Список изменений

Версия Описание
5.1.0 Добавлена поддержка LOCK_EX и возможность передачи потокового ресурса в параметр data

Примечания

Замечание: Эта функция безопасна для обработки данных в двоичной форме.

Для этой функции вы можете использовать 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 для дебага:

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.