Как надежно запускать пакетное задание каждые 5 секунд?

Я создаю приложение, в котором отправка всех уведомлений (электронная почта, SMS, факс) будет асинхронной. Приложение запишет уведомления в базу данных, а пакетное задание прочитает эти уведомления и отправит их с соответствующим транспортом.

Сначала я читал о способах запуска cron быстрее, чем за минуту, и понял, что это плохая идея.

Пакетные сценарии написаны на PHP, и я полагаю, что написание правильного демона было бы довольно трудоемким делом (хотя я открыт для любых предложений, так как машина PHP работает также бесконечно).

Я имею в виду решение, которое бы:

  • Запускать скрипт PHP каждые 5 секунд
  • Убедитесь, что предыдущий запуск завершен или прерван (никогда не выполняется 2 одновременных пакета)
  • Убить сценарий, если жить дольше, чем x минут (безопасность на случай зависания)
  • Начните с системы (если происходит перезагрузка)

есть идеи как это сделать?

1 ответ

Такое ощущение, что вы пытаетесь использовать неправильную архитектуру / инструмент для работы, и, возможно, вам следует изучить использование очереди сообщений. beanstalkd имеет несколько доступных библиотек PHP и будет блокировать чтение очереди. В этом вопросе StackOverflow есть несколько советов о том, как поступить.

Другие вопросы по тегам