問題在於腳本在很長時間後掛起。 strace的回報這樣的事情,並沒有別的:如何調試LONG RUNNING php腳本?
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)
....
把here'n'there調試消息被留下作爲最後的手段..
我可以Xdebug的連接運行腳本,但有沒有辦法發送一些POSIX信號到php進程,這將觸發xdebug轉儲當前上下文/ stacktrace/localvars?
是否有可能得到php腳本的'postmortem dump'?
這顯示你的演講更多的信息可能是通過_kill_的XDebug發送到PHP程序和捕獲的異常 – DevZer0
也不例外,但POSIX信號。如果有這樣的事情存在,那將是完美的。 – xvga
是啊,你可以使用[pcntl_signal](http://php.net/manual/en/function.pcntl-signal.php)來正確處理posix信號,然後拋出一個很好的例外 –