有没有办法在PHP中找到过程信号的当前处理程序集?
e.g。
我使用以下代码将sig_handler
方法设置为信号处理程序:
pcntl_signal(SIGINT, array($this, 'sig_handler'));
现在在下一行我调用一个框架方法,它在内部调用其他几千种方法(我推测)并最终将进程信号处理程序更改为其他方法。这导致我的sig_handler
方法无法执行。
有没有办法可以检查哪个方法被注册为特定信号的当前进程信号处理程序,以便我可以帮助自己调试?
最新更新: 在深入调试库代码之后,我发现库函数经历了阻塞RPC调用,阻止了信号被触发到进程。有关该问题的详细信息,请参阅this链接。
答案 0 :(得分:1)
我不知道检查当前信号处理程序是什么 - 但由于pcntl_signal()是更改处理程序的唯一方法,因此代码的简单grep应该显示它被更改的位置(除非你'重新使用像phalcon这样的二进制框架。