#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 выше, он не застрахован от условий гонки.