1

我有使用 symfony2-framework 用 php 编写的 rabbitmq 消费者,我正在尝试使用 xhprof 查看系统的内部工作原理和问题。问题是它没有将任何内容保存到 mongodb 中。Mongo 完全是空的。

我尝试在 php.ini、应用程序 .htaccess 文件和 apaches 虚拟主机中设置 auto_prepend_file(它添加了必要的头文件)。

我将分析器设置为分析每个请求,它分析其他一切都很好,除了在后台运行的 rabbitmq-consumers。但为什么不呢?

例如,我调用了 phpinfo.php -file,它完美地描述了它,但不是消费者,不。

4

2 回答 2

1

脚本退出时, Xhprof 不会强制保存配置文件数据。但是你指示他这样做时。很多设置包括来自https://github.com/patrickallaert/xhprof#profile-your-page的东西, using register_shutdown_function(),它在脚本末尾执行。

但是,您可以将xhprof_enable()/放在xhprof_disable()要分析的代码周围。它在循环中也完全有效,例如:

<?php

while (true) {
    // Fetch a message from the queue

    // Start profiling
    xhprof_enable();

    // [treatment of your message]

    // End profiling and dump the result
    file_put_contents("/tmp/" . uniqid() . ".your_app.xhprof", serialize(xhprof_disable()));
}
于 2020-02-17T13:24:22.513 回答
-1

当脚本存在时,Xhprof 会分析数据,这对于rabbitmq 消费者来说永远不会,因为它们是在后台运行的进程。

所以:一种解决方案是将头文件中的适当开始和退出代码添加到正在运行的脚本中,但这对我来说太麻烦了。

我最终使用了 PHP 自己的XDebug和可视化工具:Webgrind

于 2016-08-10T13:26:49.597 回答