2013-02-21 29 views
1

我写一个非常简单的定时器扩展在PHP的运行,我想知道如何:勾成脚本

  • 钩到运行/让我的扩展函数被调用时,脚本执行开始/结束
  • 挂钩到特定功能,例如Pdo :: query()在开始和结束。

的目的是为了给定的时间函数或脚本,这样我们就可以很容易地计算出执行时间等等。我知道我可以在纯PHP实现这一点:

  1. 的auto_prepend_file/auto_append_file所
  2. 使用extension可让我钩入(开始)函数。

但我最感兴趣的是C/C++解决方案(在PHP/Zend API中)。也许有更好的方式做我想做的事情?

+1

因此,PHP包装界面已经写入(MINIT,RINIT ...)?您需要将该方法挂接到请求处理中 - 不是RINIT,RSHUTDOWN您想要的吗? – 2013-02-21 08:32:44

+0

嗯,我想。我是新来的API,所以不太清楚。由于我正在对脚本进行计时,所以我不想过早开始计时,并且我认为在脚本执行前有一段时间调用了RINIT。不过谢谢你的回答!我会给它一个镜头。但是函数钩子呢? – DavidS 2013-02-21 08:37:01

+0

任何代码示例都会很好,甚至是伪代码。 – Black 2016-04-20 09:56:44

回答

0

我很确定,php没有扩展函数的钩子! 您可以在扩展中设置的唯一钩子是在Apache(MINIT)中第一次加载扩展时以及服务器(RINIT)收到请求时。我可能用某种方式替换一个函数(我前面已经阅读过某个地方可以替换zend引擎的解析,编译等功能)。

ps:你可能也想看看xdebug,我非常确定扩展会执行一些时序/分析,你可以看看它是如何完成的!