kozalo/stopwatches

一组PHP秒表

v1.0.0 2017-01-22 10:43 UTC

This package is not auto-updated.

Last update: 2024-09-23 15:20:39 UTC


README

俄语用户

此套件包含多个秒表,用于测量您的脚本执行时间(尽管不仅限于此)。

秒表

一个基本类,提供启动秒表(Start())、停止(Stop())和继续(GoOn())的功能。
Start()GoOn() 的区别在于它会重置计时器。在连续的停止和继续计时后,总时间将相加。它们在调用时都返回 timestamp,表示启动秒表的时间。
还有一个名为 IsRunning() 的方法,如名称所示,如果计时器正在运行则返回 true,否则返回 false

SessionStopwatch

在标准秒表之上的扩展。使用它,可以在PHP会话中存储数据集。
具有与基本类相同的方法,但构造函数和启动/继续方法接受字符串标记作为参数。构造函数中的字符串用作数组键和测量的名称。启动方法中的字符串用于为不同的测量部分提供有意义的名称。
这可能在测量网页不同部分的执行时间时很有用。为此,创建一个带有页面名称的会话秒表对象,然后重复启动/继续和停止计时,将每个代码块包裹起来(同时给每个块赋予有意义的标记),最后在测量结束时调用 SaveToSession() 方法,以将测量结果保存到会话中。此时,新结果不会覆盖旧结果,而是作为新元素添加。例如,数组可能有一个键 '主页',其下是一个包含编号元素的测量数组。每个测量都有一个 request_time 字段,包含执行时间的字符串表示,以及一个 timings 数组,包含测量过程中的各个阶段(此外,还有一个 total_elapsed_time 字段,表示所有阶段的总执行时间)。每个阶段的结构如下

  • label (string) — 启动测量时指定的标记。
  • start_time (float) — 测量开始的时间;微秒时间戳。
  • stop_time (float) — 与前一个类似,但表示停止测量时的时间。
  • elapsed_time (float) — 执行该步骤所花费的微秒时间。
  • total_elapsed_time (float) — 与前一个类似,但加上之前步骤的执行时间。

可以使用静态方法 GetInformationFromSession() 获取测量结果。使用 print_r() 函数打印出其中一个测量的示例,可以在 result.example 文件中找到。

异常

在执行测量过程中可能会抛出一些异常。

  • AlreadyStartedStopwatchException — 如果尝试启动已经启动的秒表,则会抛出。
  • NoStartedStopwatchException — 如果尝试停止未启动的秒表,则会抛出。

英文

秒表

这是一个测量经过时间的基类。以下列出了以下方法:

  • Start() — 从零开始新的测量并返回一个 timestamp,描述调用它的那一刻的时间。
  • Stop() — 停止秒表并返回总的经过时间。
  • GoOn() — 从停止时的时间开始测量。
  • IsRunning() — 如果秒表正在运行则返回 true,否则返回 false

SessionStopwatch

这个类扩展了Stopwatch的功能。它使用PHP会话来存储多个测量的数组。如果您想稍后分析多个测量结果,这可能很有用。
它具有与Stopwatch相同的函数,但有一些差异。

  • __construct($name) — 构造函数接收一个测量名称。它用作数组的键。
  • Start($label)GoOn($label) — 这些方法接收字符串来标记使用该代码块的代码块。

结果数组的结构如下示例所示

  • 构造函数名称
    • [0]:
      • request_time — 执行测量的时间。
      • 计时:
        • [0]:
          • 标签
          • start_time — 测量代码块开始时的微秒时间。
          • stop_time — 测量代码块停止时的微秒时间。
          • elapsed_time — 花费的微秒时间量。
          • total_elapsed_time — 执行此代码块和所有之前代码块所花费的总微秒时间。
        • [1]: ...
        • total_elapsed_time — 执行所有代码块所花费的总微秒时间。
    • [1]: ...
  • 另一个构造函数名称:...

我强烈建议您检查我的测量示例。请参阅文件result.example

此外,它还添加了两个用于处理会话的新方法

  • SaveToSession() — 只有在您调用此方法后,所有测量数据才会保存到会话中。
  • GetInformationFromSession() — 一个静态方法,让您获取结果。

异常

在使用库时,您可能会遇到两种异常。

  • AlreadyStartedStopwatchException — 如果您尝试启动或继续一个已经运行的计时器,将会抛出此异常。
  • NoStartedStopwatchException — 如果您尝试停止一个未运行的计时器,将会抛出此异常。