Задать вопрос
Elena0394
@Elena0394

Как узнать из-за чего прерывается фоновый процесс запущенный через exec?

Запускаю процесс так
//main.php
exec('nohup php test.php >> ./logfile.log 2>&1 &');
exit;

//test.php
ini_set('max_execution_time', '0');
for ($i = 0; $i < 1000; $i++) {
  file_put_contents('file-test.txt', $i . "\n", FILE_APPEND);
  sleep(1);
}

процесс завершается где-то на 200 секунде. В logfile.log ничего нет. Посмотрела лимиты ulimit -a они высокие, явно не из-за них. Вот как отловить из-за чего завершается процесс раньше чем весь цикл пройдет?
  • Вопрос задан
  • 113 просмотров
Подписаться 1 Простой 10 комментариев
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Skillbox
    PHP-разработчик. Базовый уровень
    3 месяца
    Далее
Пригласить эксперта
Ответы на вопрос 2
@rPman
Тут только остается заполнять test.php выводом отладочной информацией, добавляя после каждого вывода fflush или аналог (как вариант, вывод логов в другое место, вплоть до БД).

Без логирования есть еще вариант отладка в какой-нибудь среде разработки, но... вопрос а на домашнем компьютере все работает?
Ответ написан
@Vitsliputsli
В logfile.log ничего не будет, вы же ничего не выводите в поток.
Проверяйте логи php, если там ничего нет, проверяйте как вы их пишете (если не меняли ничего в логировании, то должны писаться).
Если логи работают (эмулируйте fatal error и посмотрите), но ничего в них нет, значит чтото внешнее убивает процесс php не давая ему возможности записать лог. Обычно так жестко поступает oom killer.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы