Redis Pub / Sub реалистично в PHP?

Я бы хотел использовать redis pub / sub в PHP, но я боюсь, что PHP не может быть единственным инструментом: подписчик должен всегда вызываться, так как php не собирается для работы в качестве демона, я могу ‘ Я не верю, что он всегда будет «включен».
Итак, каково решение для мира PHP:

  1. не используйте pub / sub, используйте другие хранилища redis с crontask, запускающим php каждые x минут
  2. использовать брокера который будет называть php?
  3. Другой?

С «2» Я имею в виду: использовать nodejs/ java / fooBar сервер, который является демономизированным подписчиком и перезванивает php (используя http / cli или что-то еще).

Я не могу найти лучшую идею, чем «2». , но в то же время это кажется таким неэффективным …

Каково твое мнение?


РЕДАКТИРОВАТЬ :
Как бы вы сделали это, используя облачную платформу, такую ​​как platform.sh, которая не дает возможности иметь supervisor.d?

2

Решение

Благодаря комментариям я нашел удовлетворительный путь: использование supervisor.d, который перезапустит командный скрипт symfony с:

  • set_time_limit(0)
  • бесконечный цикл
  • блокирующий вызов Redis ( BRPOP с макс. способом 1 сек. ниже чем read_write_timeout)
    • важно выполнить команду блокировки, чтобы не использовать все процессорное время
    • Я бы пошел в настоящий паб / саб, но сейчас у меня только один слушатель, так что это не имеет значения

что я могу сказать с ранней точки зрения:

  • supervisor.d действительно прост в установке / настройке, документация завершена, я не запускал ни одной проблемы, это очень редко + удовлетворительно!
  • похоже, хорошо работает
  • логи пишутся, так что может быть легче понять сбои будущего
  • в случае, если X последовательно и почти сбой, служба останавливается, я не нашел способа получить уведомление об этом, это действительно проблема, я думаю, я пойду к это решение(доктор)
  • как @Mike Miller сказал: «Единственное, что нужно помнить о том, что вы идете по этому пути, это то, что вам нужно перезапускаться после изменения кода, иначе он продолжит выполнение старого кода.«
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]