我正在用 PHP 编写一个非常简单的计时器扩展,我想知道如何:
- 挂接到运行时/获取我的扩展的函数,以便在脚本执行开始/结束时调用
- 在开始和结束时 Hook 特定函数,例如 Pdo::query()。
目的是为给定的函数或脚本计时,以便我们可以轻松计算执行时间等。我知道我可以在纯 PHP 中实现此目的:
- auto_prepend_file/auto_append_file
- 使用extension这让我可以 Hook 到函数的(开头)。
但我最感兴趣的是 C/C++ 解决方案(在 PHP/Zend API 中)。也许还有更好的方法来做我想做的事?
最佳答案
我很确定 php 没有用于扩展函数的钩子(Hook)! 您可以在扩展中设置的唯一 Hook 是第一次在 apache 中加载扩展时 (MINIT) 以及每次服务器收到请求时 (RINIT)。
它可能以某种方式用你自己的函数替换一个函数(我刚才在某处读到你可以替换 zend 引擎的解析、编译等函数)。
ps:你可能还想看看 xdebug,我很确定扩展会做一些计时/分析,你可以看看它是如何完成的!
关于php - Hook 到脚本的运行时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14996938/