Php 钩住脚本的运行时

Php 钩住脚本的运行时,php,c++,c,php-extension,Php,C++,C,Php Extension,我正在用PHP编写一个非常简单的计时器扩展,我想知道如何: 挂接到运行时/获取脚本执行开始/结束时要调用的my extension函数 在开始和结束时钩住特定函数,例如Pdo::query() 其目的是为给定的函数或脚本计时,以便我们可以轻松计算执行时间等。我知道,我可以通过以下方式在纯PHP中实现这一点: 自动预结束文件/自动追加文件 使用一个可以让我钩住(开始)函数的 但我最感兴趣的是C/C++解决方案(在PHP/ZendAPI中)。也许还有更好的方法来完成我想要的任务?我很确定php在

我正在用PHP编写一个非常简单的计时器扩展,我想知道如何:

  • 挂接到运行时/获取脚本执行开始/结束时要调用的my extension函数
  • 在开始和结束时钩住特定函数,例如Pdo::query()
其目的是为给定的函数或脚本计时,以便我们可以轻松计算执行时间等。我知道,我可以通过以下方式在纯PHP中实现这一点:

  • 自动预结束文件/自动追加文件
  • 使用一个可以让我钩住(开始)函数的

  • 但我最感兴趣的是C/C++解决方案(在PHP/ZendAPI中)。也许还有更好的方法来完成我想要的任务?

    我很确定php在扩展中没有函数挂钩! 您可以在扩展中设置的唯一挂钩是在apache(MINIT)中首次加载扩展时,以及每次服务器(RINIT)收到请求时

    也许你可以用自己的函数来替换一个函数(我刚才在某个地方读到过,你可以替换zend engine的函数来进行解析、编译等)


    ps:您可能还想看看xdebug,我很确定该扩展做了一些计时/评测,您可以看看它是如何在那里完成的

    那么PHP包装接口已经编写好了(MINIT、RINIT…)?你需要一种方法来连接到请求处理中——RINIT,rshutton,这不是你想要的吗?嗯,我想。我是API新手,所以不太清楚。因为我正在为脚本计时,所以我不想过早地开始计时,我认为RINIT是在脚本执行之前调用的。不过,谢谢你的回答!我要试一试。但是函数挂钩呢?任何代码示例都很好,即使是伪代码。