PHP关于方法/函数调用事件



是否有一种方法可以像xdebug跟踪一样用php捕获方法/函数调用并返回事件?

我试着使用register_tick_function,但我不太确定这是一个好方法。

我也试着做我自己的php扩展(使用Zephir(,但仍然存在同样的问题。

顺便说一句,我不想使用xdebug扩展。什么是最好的方法?

方法是编写一个挂钩到zend_execute和zend_execute_internal的PHP扩展。

请参阅tidways_xhprof探查器扩展中的以下相关行:

https://github.com/tideways/php-xhprof-extension/blob/master/tideways_xhprof.c#L15-L18

前两行声明了全局变量,用于存储旧的/原始的函数指针。后两行是包装原始函数的新函数的声明。

https://github.com/tideways/php-xhprof-extension/blob/master/tideways_xhprof.c#L67-L71

现在在模块init中,我们可以保留旧指针的引用,并用自己的函数覆盖Zend引擎使用的指针。

https://github.com/tideways/php-xhprof-extension/blob/master/tideways_xhprof.c#L164-L200

这些行是钩子的新实现。他们称之为原始的。

Xdebug以类似的方式实现这一点,但代码要复杂得多,因为它有许多不同的特性挂接到函数循环中。

相关内容

  • 没有找到相关文章

最新更新