Если я напишу данные в файл через file_put_contents
с FILE_APPEND
флагом FILE_APPEND
и двумя пользователями одновременно будут отправлять данные, будет ли он добавляться независимо или есть ли возможность перезаписать одну запись?
Если я установил флаг LOCK_EX
, будет ли вторая LOCK_EX
ждать завершения первого представления или потеряны ли данные, если невозможно получить эксклюзивную блокировку?
Как PHP обычно обрабатывает это? Я запускаю версию 5.2.9. если это имеет значение.
Спасибо, Райан
вы также можете проверить функцию стада, чтобы реализовать правильную блокировку (не основанную на трюке while / sleep)
Если вы установили эксклюзивную блокировку файла через LOCK_EX
, второй скрипт (по времени), который пытается записать, просто вернет false из файла__компьютера.
т.е.: он не будет сидеть и ждать, пока файл станет доступным для записи.
Таким образом, если это необходимо, вам нужно будет запрограммировать это поведение самостоятельно, возможно, пытаясь использовать file_put_contents ограниченное количество раз (например: 3) с использованием подходящего размера сна между каждой попыткой.