jstewmc / floor-execution-time
Floor a script's execution time
Requires
- php: ^7.0
Requires (Dev)
- jstewmc/test-case: ^1.0
This package is auto-updated.
Last update: 2024-11-29 04:41:27 UTC
README
Floor a script's execution time.
This library will calculate a script's total execution time from $_SERVER['REQUEST_TIME_FLOAT']
to now in milliseconds.
If the total execution time is less than the floor, it will sleep for the difference:
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
If the execution time is greater than the floor, it will not sleep:
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
Flooring execution time helps defend against brute-force and timing attacks. Scripts which are likely to be brute-forced should be slow. Scripts which are likely to be timing attacked should have a constant execution time. Some scripts should be both.
Dependencies
This library depends on the REQUEST_TIME_FLOAT
server variable. There is no guarantee that every web server will provide the REQUEST_TIME_FLOAT
variable, however, most will. If the REQUEST_TIME_FLOAT
server variable does not exist, this library will throw a RuntimeException
on construction.
License
Author
Version
2.0.0, December 27, 2016
- Rename
Floor
toFloorExecutionTime
. - Update
__construct()
to throw exception ifREQUEST_TIME_FLOAT
server variable does not exist. - Remove
$start
argument of__invoke()
method. It makes more sense to useREQUEST_START_TIME
.
1.0.0, August 16, 2016
- Major release
- Update
composer.json
- Clean up comments
0.1.0, August 3, 2016
- Initial release