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

Я ищу простого демона блокировки, который слушает клиентов по TCP и обрабатывает запросы на блокировку.

Мне нужно синхронизировать параллельные процессы PHP на нескольких машинах. Например, одна машина может сказать "Я блокирую идентификатор" abcd "с этого момента и до своей смерти", и если вторая машина скажет то же самое "заблокировать" abcd "", ее запрос будет отложен до тех пор, пока первая не выпустит "abcd" машина. Идентификатор также освобождается, если процесс получения случайно умирает (когда он умирает, происходит отключение, поэтому демон блокировки может обработать это отключение как снятие блокировки).

Обратите внимание, что memcached add() не очень хорош в этом случае, потому что он не может обрабатывать непредвиденные разъединения (это важно: во многих случаях процесс может неожиданно завершиться и без шанса снять блокировку; также блокировка не может быть снята по таймауту, потому что некоторые процессы работают давно). Мне нужен демон, который поддерживает открытые связи и заботится о них.

1 ответ

Не уверен, что именно ты пытаешься сделать. Может ли Amazon Simple Queue Service быть подходящим?

http://aws.amazon.com/sqs/

В своем объяснении службы они говорят:

  • Разработчики могут создавать неограниченное количество очередей Amazon SQS с неограниченным количеством сообщений.
  • Очередь может быть создана в 4 регионах - Восток США (Северная Вирджиния), Запад США (Северная Калифорния), ЕС (Ирландия) и Азиатско-Тихоокеанский регион (Сингапур).
  • Тело сообщения может содержать до 64 КБ текста в любом формате (по умолчанию 8 КБ).
  • Сообщения могут храниться в очередях до 14 дней (по умолчанию 4 дня).
  • Сообщения можно отправлять и читать одновременно.
  • Когда сообщение получено, оно становится "заблокированным" во время обработки. Это не позволяет другим компьютерам обрабатывать сообщение одновременно. Если обработка сообщения завершится неудачно, срок действия блокировки истечет, и сообщение снова будет доступно. В случае, когда приложению требуется больше времени для обработки, время ожидания "блокировки" можно динамически изменить с помощью операции ChangeMessageVisibility.
  • Разработчики могут получить доступ к Amazon SQS через основанные на стандартах интерфейсы SOAP и Query.
  • Разработчики могут безопасно делиться очередями Amazon SQS с другими. Очереди могут делиться с другими учетными записями AWS и анонимно. Совместное использование очереди также может быть ограничено IP-адресом и временем суток.
Другие вопросы по тегам