Почему может падать php-скрипт, запущенный через функцию exec()? Сама команда выглядит так nohup php script.php > script.log &
Когда вбиваю в консоли - всё работает. Когда запускаю через php exec(), скрипт работает секунд 5-10, потом всё падает. В чём разница между запуском из консоли и запуском через скрипт php?
родительский php процесс как запускается ? если из веб-сервера - то там куча своих лимитов.
и сравни доступные ресурсы в начале скрипта для разных способов вызова.
Запускается из веб-сервера. Непонятно, на чём вываливается. У меня там стоит куча try-catch на разных уровнях, вообще ни в один не попадает. Поставил подробное логгирование каждого шага. В один неопределённый момент сообщения в лог перестают добавляться. Всё выглядит так, как если сделать kill процесса. Никаких уведомлений о том, что превышен какой-то лимит времени, как это бывает в php-скриптах. Стоит error_reporting(E_ALL), это тоже никак не влияет. Каким ещё образом из php-скрипта можно запустить процесс?
Запускается из веб-сервера - тогда копай в сторону лимитов. Все лимиты родительского процесса наследуются дочерним. И это не зависит от способа запуска. А у веб-сервера наверняка есть ограничение на время жизни скрипта.
Обойти лимиты можно только через повышение прав.
>> Никаких уведомлений о том, что превышен какой-то лимит времени, как это бывает в php-скриптах.
это для php-шных лимитов. системный тебя молча грохнет.
А вы проверили, что у вас включено исполнение exec, по умолчанию во всех серверах оно отключено. Если не включено, то будет умирать выше описанным способом..
Если всё таки включено, то проверьте работу на простом выводе чего нить в файл.
Если в файл выводит, то все используемые команды пишите с полным путем, при проверке из консоли запускаете файл с правами пользователя от которого запущен вебсервер.