【问题标题】:Hook into runtime of scripts挂钩到脚本的运行时
【发布时间】:2013-02-21 07:39:41
【问题描述】:

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

  • 挂钩到运行时/获取我的扩展程序的函数,以便在脚本执行开始/结束时调用
  • 挂钩到特定函数,例如,在开始和结束时使用 Pdo::query()。

目的是给给定的函数或脚本计时,以便我们可以轻松计算执行时间等。我知道我可以在纯 PHP 中实现这一点:

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

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

【问题讨论】:

  • 那么PHP封装接口已经写好了(MINIT, RINIT...)?您需要挂钩到请求处理的方法 - RINIT、RSHUTDOWN 不是您想要的吗?
  • 好吧,我猜。我是 API 新手,所以不太清楚。由于我正在为脚本计时,我不想太早开始计时,而且我认为 RINIT 是在脚本执行之前的某个时间被调用的。不过还是谢谢你的回答!我会试一试。但是函数钩子呢?
  • 任何代码示例都会很好,甚至是伪代码。

标签: php c++ c php-extension


【解决方案1】:

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

也许有可能用你自己的函数替换一个函数(我前段时间在某处读到你可以替换 zend 引擎的函数进行解析、编译等)。

ps:你可能还想看看 xdebug,我很确定扩展做了一些计时/分析,你可以看看它是如何完成的!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 2022-05-28
    • 1970-01-01
    • 2018-07-11
    • 2020-04-25
    • 2015-12-14
    相关资源
    最近更新 更多