Почему блокируется такой беспорядок в PHP?

Пользователь SO задал вопрос , на который фактически был дан ответ «используйте механизм блокировки» ".

Изучая свой ответ, я обнаружил, что, похоже, в PHP не существует простого, надежного механизма блокировки между процессами. flock () имеет большое жирное предупреждение:

В некоторых операционных системах flock () реализован на уровне процесса. При использовании API многопоточного сервера, такого как ISAPI, вы, возможно, не сможете полагаться на flock () для защиты файлов от других сценариев PHP, работающих в параллельных потоках того же экземпляра сервера!

Обсуждение в этот вопрос вникает в проблему довольно глубоко, но предлагает только довольно сложные решения: использование RAM-диска или Memcache.

Единственное, что выглядит наполовину хорошо, - это mySQL GET_LOCK () .

Итак, мой вопрос: действительно ли это так? Неужели в PHP нет простой, понятной, кроссплатформенной безопасной системы блокировки? Тот, который является атомарным, снимает блокировку, если процесс-владелец умирает, и не делает этого. не нужны огромные усилия по настройке?

16
задан Community 23 May 2017 в 12:16
поделиться