Как вы отлаживаете PHP-скрипт LONG RUNNING?

Проблема в том, что скрипт зависает через некоторое время. strace возвращает что-то вроде этого и ничего больше:

Process 7286 attached - interrupt to quit restart_syscall(<... resuming interrupted call ...>) = 0 poll([{fd=13, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout) clock_gettime(CLOCK_MONOTONIC, {1817569, 74651533}) = 0 clock_gettime(CLOCK_MONOTONIC, {1817569, 74734744}) = 0 clock_gettime(CLOCK_MONOTONIC, {1817569, 74812047}) = 0 poll([{fd=13, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout) poll([{fd=13, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout) .... 

Полагая здесь, отладочные сообщения остаются в крайнем случае.

Я могу запустить скрипт с прикрепленным xdebug, но есть ли способ отправить некоторый сигнал POSIX в процесс php, который приведет к запуску xdebug, чтобы сбрасывать текущий контекст / stacktrace / localvars?

Можно ли получить «postmortem dump» php script?

Solutions Collecting From Web of "Как вы отлаживаете PHP-скрипт LONG RUNNING?"

Для этого Xdebug не имеет функциональности. Использование pcntl_signal, а затем использование xdebug_print_function_stack – это опция, но то, что вы также можете сделать, – это создать «функциональную трассировку». Это то, что заставляет Xdebug записывать каждый вызов функции на диск, как только они происходят. Это должно быть в состоянии сказать вам, где висит ваш скрипт. Из того, что я вижу, это то, что ждет ИО.

Более подробная информация о функциях отслеживается по адресу http://www.xdebug.org/docs/execution_trace