Пользователь SO задал вопрос , на который фактически был дан ответ "использовать механизм блокировки".
Исследуя мой ответ, я обнаружил, что, как представляется, не существует простыхнадежный механизм блокировки в PHP. flock () имеет большое жирное предупреждение:
В некоторых операционных системах flock () реализован на уровне процесса.При использовании многопоточного серверного API, такого как ISAPI, вы не сможете полагаться на flock () для защиты файлов от других сценариев PHP, работающих в параллельных потоках одного и того же экземпляра сервера!
Обсуждение в этот вопрос довольно глубоко вникает в проблему, но предлагает только довольно сложные решения: использование RAM-диска или Memcache.
Единственное, что выглядит на полпути хорошо, это mySQL GET_LOCK()
.
Итак, мой вопрос: так ли это на самом деле?Неужели в PHP не существует простой, простой, кроссплатформенной безопасной системы блокировки?Тот, который является атомарным, и снимет блокировку, если процесс владельца умирает, и не требует огромных усилий по установке?