DmitryKoterov
@DmitryKoterov

Демон блокировок с API для PHP (или любым простым API)?

Порекомендуйте, пожалуйста, какой-нибудь простой популярный демон поддержки блокировок, который ждет соединений от клиентов по TCP и обрабатывает запросы на эксклюзивные блокировки.


Мне нужно синхронизировать параллельные PHP-процессы на НЕСКОЛЬКИХ машинах. Например, первая машина может сказать «я блокирую идентификатор 'abcd', начиная с текущего момента и до моей смерти/дисконнекта». И если вторая машина после этого скажет «заблокировать 'abcd'», то ее запрос «подвиснет» до тех пор, пока первая машина не освободит идентификатор 'abcd'. Важно, что идентификатор также должен автоматом освобождаться, если процесс неожиданно умирает и не имеет возможность сказать демону блокировок, что он освобождает идентификатор (это может работать, например, через отслеживание дисконнекта на стороне демона — ведь когда клиент умирает, соединение с демоном рвется).


Я смотрел в сторону memcached add(), однако он не совсем подходит, потому что а) не может обрабатывать внезапные дисконнекты (связь с сервером хоть и держится, но с точки зрения семантики блокировки ничего не значит) и б) мне не подходит схема освобождения блокировки просто по тайм-ауту неактивности процесса, потому что процесс может работать непредсказуемое время.


Нужен именно демон, который умеет работать с постоянными соединениями и обрабатывает их разрыв как сигнал к освобождению блокировки.
  • Вопрос задан
  • 2367 просмотров
Пригласить эксперта
Ответы на вопрос 1
tzlom
@tzlom
Подними redis, а в реализации долгих операций сделай обновлялку таймаута
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы