jstewmc/floor-execution-time

将脚本的执行时间四舍五入

v2.0.0 2016-12-27 23:29 UTC

This package is auto-updated.

Last update: 2024-08-29 03:58:10 UTC


README

将脚本的执行时间四舍五入。

此库将从 $_SERVER['REQUEST_TIME_FLOAT']现在 计算脚本的总体执行时间(以毫秒为单位)。

如果总体执行时间小于 floor,则将睡眠差异时间

namespace Jstewmc\FloorExecutionTime;

// instantiate the service with a 500 millisecond floor
$service = new FloorExecutionTime(500);

// ... something that takes 100 milliseconds

$service();  // sleeps for 400 milliseconds

如果执行时间大于 floor,则不会睡眠

namespace Jstewmc\FloorExecutionTime;

// instantiate the service with a 500 millisecond floor
$service = new FloorExecutionTime(500);

// ... something that takes 1,000 milliseconds

$service();  // sleeps for 0 milliseconds

四舍五入执行时间有助于防御 暴力破解定时 攻击。可能被暴力破解的脚本应该运行缓慢。可能被定时攻击的脚本应该有恒定的执行时间。一些脚本可能两者都需要。

依赖关系

此库依赖于 REQUEST_TIME_FLOAT 服务器变量。不能保证每个 Web 服务器都会提供 REQUEST_TIME_FLOAT 变量,但大多数都会。如果不存在 REQUEST_TIME_FLOAT 服务器变量,则此库在构造时会抛出 RuntimeException

许可证

MIT

作者

Jack Clayton

版本

2.0.0, 2016年12月27日

  • Floor 重命名为 FloorExecutionTime
  • 更新 __construct() 以在 REQUEST_TIME_FLOAT 服务器变量不存在时抛出异常。
  • 删除 __invoke() 方法的 $start 参数。使用 REQUEST_START_TIME 更有意义。

1.0.0, 2016年8月16日

  • 主要版本
  • 更新 composer.json
  • 清理注释

0.1.0, 2016年8月3日

  • 首次发布