asiby / chronos
一个PHP库,可以用来启动计时器,跟踪操作所需时间。
Requires
- psr/log: ^1.1
This package is auto-updated.
Last update: 2024-09-20 19:24:59 UTC
README
一个PHP库,用于启动计时器以跟踪应用程序中某些操作的执行时间。
简介
这个库受到了Google Chrome DevTools功能的启发,该功能允许使用console.time()
、console.timeLog()
和console.timeEnd()
来分别创建计时器、记录计时器的值和销毁计时器,同时打印出最终计时器的值。
这是该功能的PHP等价物,并提供了以下优点
- 非常容易使用
- 没有依赖项
- 极被动……如果不正确使用,它不会抛出任何错误。
安装
composer require asiby/chronos
导入库
在任何打算使用Chronos
的代码顶部使用以下语句。
use ASiby\Chronos;
API文档
请注意,为了简化,Chronos
仅提供静态方法。
每个计时器都必须有一个唯一的标识符(标签),该标识符将用于生成该计时器的输出。
创建计时器
Chronos::time([$label = 'default'], [$verbose = false]);
参数
$label
: 可选字符串(默认:'default')。这是正在创建的计时器的唯一标识符。$verbose
: 可选字符串(默认:false)。此参数将使计时器生成一些额外的信息。
输出
Started a new timer with the label 'default'
如果启用详细模式,此函数将仅生成输出。标签的名称将包含在生成的输出中。
time()
函数可以多次以不同的标签调用。如果尝试创建一个已存在的计时器,则不会发生任何操作。
示例
创建默认计时器。
use ASiby\Chronos; // ... Chronos::time();
创建一个名为数据库调用耗时
的计时器。
use ASiby\Chronos; // ... Chronos::time("Time taken by the database call");
创建一个名为API请求时间
的计时器,并启用详细模式。
use ASiby\Chronos; // ... Chronos::time("API Request Time", true);
创建一个具有默认标签但启用详细模式的计时器。
use ASiby\Chronos; // ... Chronos::time(null, true);
打印计时日志
Chronos::logTime([$label = 'default'], [$description = null], [$showDelta = true]);
参数
$label
: 可选字符串(默认:'default')。这是正在创建的计时器的唯一标识符。$description
: 可选字符串(默认:null)。附加的额外文本,可帮助识别与特定时间日志相关的上下文。$showDelta
: 可选字符串(默认:true)。包括自上次调用logTime()
以来的相对时间。第一次调用logTime()
将不显示增量。
在调用time()
之前不能调用logTime()
。
别名
Chronos::timeLog([$label = 'default'], [$description = null], [$showDelta = true]);
输出
第一次调用...
default: 1.5044138432s
后续调用...请注意,增量是可选的,并由showDelta
标志控制。
default: 3.0088098049s - Time log delta: 1.5043959618s
附有描述的时间日志
default: 3.0088098049s - Time log delta: 1.5043959618s - This is the second time log
使用友好标签。
The execution time is: 3.0088098049s - Time log delta: 1.5043959618s - This is the second time log
示例
打印默认计时器的时间日志。
use ASiby\Chronos; Chronos::time(null, true); usleep(1500000); Chronos::logTime(null, "First logTime()"); usleep(1500000); Chronos::logTime(null, "Second logTime()", false); usleep(500000); Chronos::logTime(null, "Third logTime()"); usleep(1500000); Chronos::logTime(); usleep(1500000); Chronos::logTime(); usleep(500000); Chronos::logTime();
Chronos::time(null, true);
usleep(1500000);
Chronos::logTime(null, "First logTime()");
usleep(1500000);
Chronos::logTime(null, "Second logTime()");
usleep(500000);
Chronos::logTime(null, "Third logTime()");
usleep(1500000);
Chronos::logTime();
usleep(1500000);
Chronos::logTime();
usleep(500000);
Chronos::logTime();
销毁计时器
Chronos::endTime([$label = 'default'], [$description = null]);
此函数将销毁计时器并记录其值、标签以及在调用时提供的可选描述。
参数
$label
: 可选字符串(默认:'default')。这是正在创建的计时器的唯一标识符。$description
: 可选字符串(默认:null)。附加的额外文本,可帮助识别与特定时间日志相关的上下文。
endTime()
函数是针对计时器可以执行的最后操作。任何后续调用logTime()
将失败。
别名
Chronos::timeEnd([$label = 'default'], [$description = null], [$showDelta = true]);
输出
第二行是在创建计时器时使用详细模式时记录的。
default: 10.0224950314s (final)
Terminated a new timer with the label 'default'
鸣谢
此实现受到了Google Chrome DevTools功能的启发。
贡献
欢迎改进!请随时提交拉取请求。
许可证
MIT
版权所有 © 2020 - Abdoulaye Siby