koalamer/tideways-xhprof-free-scheduler

Tideways Xhprof扩展免费版的集成便利类。

v0.1.0 2020-11-05 06:59 UTC

This package is not auto-updated.

Last update: 2024-09-21 00:25:29 UTC


README

一个小的辅助类,用于将免费版的Tideways XHProf扩展版集成到您的代码中。

如何使用

设置tideways_xhprof扩展

您可以在github.com/tideways/php-xhprof-extension找到源代码、预编译包以及安装说明。

在脚本中使用类名

您可以让类自动加载,但如果您希望在测量中包含自动加载过程,则应直接包含源文件,并在包含自动加载器之前开始分析。

use koalamer\Tideways\TidewaysXhprofFreeScheduler;

设置分析启动的频率

设置值为X将导致有1/X的概率启动分析。设置小于1将导致分析器永不启动。默认值是0,表示不进行分析。

TidewaysXhprofFreeScheduler::setStartingChanceDivisor(100);

启动实际分析

init()调用将使用起始机会除数的当前值来确定是否实际启动分析。

一旦启动分析,后续调用将不执行任何操作。

例如:在单个入口点场景中,您可以设置全局的低起始机会,调用init(),然后为运行频率较低的代码(模块/例程/操作)设置更高的起始机会,并再次调用init()。这样,您可以在通常有较低分析机会的代码部分捕获分析信息,同时仍保留全局设置,而不会相互干扰。

如果tideways_xhprof扩展没有加载,调用将返回false,否则返回true。

TidewaysXhprofFreeScheduler::init()

通过定义分段维度来设置日志文件路径

您可以通过定义分段来设置日志文件路径。每个分段级别对应一个目录级别。您提供的键值对仅在分析停止时评估,因此您可以在代码中定义和重新定义分段级别。

当脚本关闭时,分析停止。然后对分段参数进行排序并压缩,因此您使用的键很重要。

如果您提供的值是空字符串,则该值将被替换为字符串"empty"。

例如,定义以下分段

TidewaysXhprofFreeScheduler::setSegmentation("1-host", gethostname())
TidewaysXhprofFreeScheduler::setSegmentation("3-module", "awesome-module")
TidewaysXhprofFreeScheduler::setSegmentation("2-day", date("Y-m-d"))
TidewaysXhprofFreeScheduler::setSegmentation("0-root","/tmp")
TidewaysXhprofFreeScheduler::setSegmentation("4-action","")

将导致日志文件路径"/tmp/some-hostname/2020-11-03/awesome-module/empty/"。

写入日志文件

当内部单例类实例被销毁时,分析停止,因此这是自动的。

日志文件名本身将是类似"20201103_064423_032472.json"的当前时间,形式为日期、时间和微秒。

根据需要创建日志路径目录以容纳日志文件。

读取分析日志

要评估生成的日志,请使用可在github.com/tideways/toolkit找到的Tideways Toolkit。