PHP зависает консольный скрипт, помогите найти причину!
На моем сайте пользователи запускают "долгие" скрипты с помощью
exec ( '/usr/bin/php /var/www/script.php' );
Скрипт обрабатывает (загружает, читает, выгружает) файлы, обычно это достаточно большое количество. Отдельные экземпляры могут выполняться несколько часов без остановки. Все прекрасно работает на протяжении нескольких лет. Да, это действительно так, последних года два никаких правок в код, или в настройки сервера не производилось.
Вдруг, последние пару дней начинает наблюдаться непонятная проблема - некоторые экземпляры запущенных скриптов просто зависают (или останавливаются вообще). Никакой логики не прослеживается, просто работа прерывается. Может в первую минуту, может спустя два часа. Пользователей на сайте много, жалоб за последние дни - огромное количество. В логах найти ничего не удается, учитывая что скрипт работает консольно - их и найти практически нереально. Грешил на curl, на mysql, мониторил два дня эту часть - ничего. Пишет пользователь с жалобой на зависший скрипт. Беру его и запускаю через шелл, чтобы видеть весь вывод - в итоге он отрабатывает как швейцарские часы без единой ошибки.
Понимаю что вопрос в целом "ни о чем", тут скорее бубен нужен. Но я на грани паники уже, не знаю где искать. Возможно кто-то направит на путь истинный?
ДОПОЛНЕНО. Опытным путем установил, что скрипт видимо вылетает на таком участке кода:
sleep ( 1 );
То есть на какой то случайной интерации цикла все что sleep - выполняется, дальше - все, скрипт остановился. Как может sleep убивать скрипт, причем не постоянно, а в каких то отдельных случаях?
Сделал "ручное" логирование. В буквальном смысле скрипт выглядит так -
<?php
while ()
{
// Некие операции, логи включены, все ок
mylog ( 'А теперь отправляемся на отдых!');
sleep ( 1 );
mylog ( 'Хватит отдыхать, продолжаем' );
}
?>
В логе расписано масса интераций, пока в какой то момент скрипт не умирает с последней записью в логе 'А теперь отправляемся на отдых!'
Изучаю проблемы, замеченные со sleep. Видимо я не первый, хотя информации и мало. Весь функционал скрипта уже отключил, он буквально гоняет по кругу цикл без смысловой нагрузки, только ради логирования. Иногда выполняет 2 тысячи интераций, иногда вылетает уже на 50-й
Может, какой то демон "убивает" выборочные процессы?