Мы используем beanstalkd для запуска получения заданий от клиента с помощью php и использования pheanstalk в качестве агента php. мы запускаем работника как системного демона php и продолжаем мониторинг, используя monit.
Но он продолжает перезапускаться с частотой один раз в день. После наблюдения проблемы это подтверждает, что нет ошибок на стороне кода. Так каковы шансы?
PHP не рассчитан на длительный процесс, и поэтому перезапуск сценария иногда, вероятно, полезен, особенно если у вас чистый выход.
Например, вы можете запустить 50/100/1000 заданий в цикле, а затем выйти из сценария для его автоматического перезапуска. Упаковка вызов скрипта в довольно простом скрипте Можно проверить возвращаемое значение, а затем либо немедленно перезапустить, либо немного замедлить работу, если могут возникнуть проблемы.
Причины, по которым скрипт может внезапно потерпеть неудачу, многочисленны и разнообразны. Утечка памяти может заставить ОС завершить процесс, ошибка может вызвать необработанное исключение или другую фатальную ошибку, или что-то внешнее по отношению к сценарию может вызвать сбой.
Сложная часть фоновых рабочих для очередей связана с (потенциальными) проблемами, которые могут помешать скрипту работать постоянно. Подробные журналы могут очень помочь в попытке отследить такие проблемы.
Других решений пока нет …