запись в файл с помощью одной функции

#php #file

#php #файл

Вопрос:

Есть ли функция, в которой я не ограничен в открытии файла для записи в него, а затем для его закрытия. Я ищу одну функцию, которая выглядит следующим образом

 bool thefunction(string line, string path, string mode);
  

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

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

1. Даже если вы используете file_put_contents() для записи увеличенного значения в файл, это на самом деле не поможет вам избежать условий гонки. Все еще будет время между тем, как вы прочитаете значение в файле, и записью нового значения. Вам нужна одна атомарная операция, которая считывает старое значение, увеличивает его и записывает обратно. Единственный способ сделать это с помощью file IO — через flock() . На самом деле было бы проще просто использовать memcached, который предлагает операцию атомарного увеличения.

Ответ №1:

Изучите file_put_contents() . Вам все равно понадобится chmod() файл, если вам требуются другие разрешения, чем file_put_contents() creates.

Пример:

 // This writes a line to a file, appending to what's already there
$success = file_put_contents("/path/to/file.txt", "This string goes into the filen", FILE_APPEND);
  

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

1. Ответ не может быть сокращен больше… Спасибо, Майкл

2. @Oddantfr рад помочь. Как упоминал @Frank Farmer выше, он не застрахован от условий гонки.