Я знаю, что file_put_contents () упрощает добавление данных в файл на PHP. Я хотел бы попытаться использовать « потоки » PHP в file_put_contents()
в том же файле журнала из разных потоков PHP. Есть ли риск запуска file_put_contents () в том же файле из разных потоков PHP или эти потоки будут успешно блокироваться, если файл заблокирован или доступен другим потоком?
EDIT: нашел аналогичный вопрос, который рекомендует flock () , но вопрос о риске, похоже, не полностью устранен. Являются ли эти «атомарные» операции записи?
как говорится на странице руководства (что вы дали ссылку для!):
// Write the contents to the file, // using the FILE_APPEND flag to append the content to the end of the file // and the LOCK_EX flag to prevent anyone else writing to the file at the same time file_put_contents($file, $person, FILE_APPEND | LOCK_EX);
Используйте флаг LOCK_EX
для предотвращения двойной записи
Простой ответ, да. могут произойти столкновения
используйте что-то вроде file_put_contents($location, $data, FILE_APPEND | LOCK_EX);
Когда вы ожидаете, что несколько экземпляров будут записываться в один и тот же файл, вы должны приобрести эксклюзивную блокировку, чтобы никакие другие процессы не могли записывать файл, пока текущий не закончит запись его данных