Фоновые задачи в PHP без клиента, альтернатива cron?
Суть такая - есть некоторая система (php-приложение), при достижении определенного состояния в ней выполняется некоторая задача на PHP.
Пример: есть список заказов. Условие - если есть недоставленные заказы, у которых осталось менее 30 минут до ориентировочного времени доставки, то необходимо послать оповещение курьеру, что он, возможно, опаздывает.
Самое простое решение, это добавить задачу в cron, раз в минуту запускать скрипт, который будет проверять условие и делать работу. Есть ли здесь альтернативы в современном php?
Смотрел в сторону очередей и серверов задач, gearman, rabbitmq, но там юзкейс, на сколько понимаю немного другой - есть клиент, который прямо отправляет задачу в очередь, а в моем случае клиента нет, есть просто состояние системы, которое триггерит задачу.
Еще вариант - php-демон, в котором в цикле проверять условие и усыплять скрипт на минуту. Но здесь нужно думать об утечках памяти, рестартах демона и т.д.
Неужели в итоге банальный cron здесь самое оптимальное решение?
Демоны на php были есть и будут, гуглите: https://daemon.io/ profyclub.ru/docs/274
Пробуйте, читайте отзывы и т.д. Проблема демонов в том, что к ним нужна ещё какая-никакя, а система мониторинга, работает демон или нет (сервер был перезагружен, выржрал всю память, просто завис и т.д.) и всякие системы автозапуска на случай профилактических работ в ДЦ.
Решение на cron обычно проще и надёжнее, но только в одном случае: есть гарантия что когда скрипт запускается по крону, предыдущий скрипт уже завершил свою работу, иначе падение сервера это просто вопрос времени или стечения обстоятельств.
oxidmod: Безусловно, но бывает работаешь с разработчиками которые в системном администрировании не в зуб ногой, или надо сделать проект и уйти, а кто им потом на новый сервер supervisor будет ставить? Или нет root'a. Всё же что бы правильно и беспроблемно работать с демонами надо владеть некоторыми навыками системного администрирования...