Задать вопрос
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 они высокие, явно не из-за них. Вот как отловить из-за чего завершается процесс раньше чем весь цикл пройдет?
  • Вопрос задан
  • 102 просмотра
Подписаться 1 Простой 10 комментариев
Пригласить эксперта
Ответы на вопрос 2
@rPman
Тут только остается заполнять test.php выводом отладочной информацией, добавляя после каждого вывода fflush или аналог (как вариант, вывод логов в другое место, вплоть до БД).

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

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

Похожие вопросы
Lachestry Таганрог
от 170 000 до 200 000 ₽
SpectrumData Екатеринбург
от 150 000 до 220 000 ₽
14 дек. 2024, в 22:46
150000 руб./за проект
14 дек. 2024, в 22:43
2000 руб./за проект
14 дек. 2024, в 22:08
2500 руб./за проект