jstewmc / floor-execution-time
将脚本的执行时间四舍五入
v2.0.0
2016-12-27 23:29 UTC
Requires
- php: ^7.0
Requires (Dev)
- jstewmc/test-case: ^1.0
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
。
许可证
作者
版本
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日
- 首次发布