asiby/chronos

一个PHP库,可以用来启动计时器,跟踪操作所需时间。

1.0.1 2020-04-09 21:46 UTC

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