Я использую PHP на основе сценария для чтения из базы данных и отправлять электронные письма (используя библиотеку PEAR Mail_Queue). Я запускаю его из сценария bash и на основе возвращаемого результата (из «exit $ status;») либо останавливается, либо спящий X секунд, либо сразу же перезапускается. (Я также поставил проверку средней загрузки/сна в PHP-скрипт, чтобы не подчеркивать почтовую систему).
Если бы для долгосрочного демона, который должен был быть постоянно запущен, то я согласен, вероятно, было бы не лучшим, что можно было бы запустить (хотя я слышал о некоторых серверах сокетов, которые успешно выполнялись в течение длительного времени), однако PHP 5.3 теперь также улучшил сбор мусора, и если сценарий достаточно хорошо написан, чтобы не выйти из незапланированных, тогда память должна быть гораздо менее сложной, чем раньше.
Лучшим и единственным способом является контроль процесса. Он вращается вокруг родительского процесса, разыгрывая ребенка и захватывая его выходной сигнал. Если выходной сигнал не подходит, перезапустите дочерний процесс. Если ребенок умирает, родитель (супервизор) перезапустит его. Все ответы, предоставленные для этого вопроса, в лучшем случае плохи, поскольку ни один из них не упоминает супервизора. –