Monitor Code Processing Time in PHP with Time Warden
Published on by Paul Redmond
Time Warden is a lightweight PHP library that enables you to monitor the processing time of tasks and take actions on thresholds exceeding defined execution time limits. It's probably best illustrated with an example from the readme:
timeWarden()->task('Checking articles')->start(); foreach ($articles as $article) { // Perform long process... ๐} // Using traditional anonymous functiontimeWarden()->stop(static function (Task $task): void { $task->onExceedsMilliseconds(500, static function (Task $task): void { // Do what you need, for example, send an email ๐ Mail::to('foo@bar.com')->queue( new SlowArticleProcess($task) ); });}); // Or using an arrow functiontimeWarden()->stop(static function (Task $task): void { $task->onExceedsMilliseconds(500, fn (Task $task) => Log::error($task->name.' has taken too long'));});
This library has excellent documentation in the project's readme, which in summary offers the following features:
- Monitor processing time of critical tasks in development and debugging
- Reactive actions when time is exceeded (milliseconds, seconds, minutes, and hours)
- Execution time debugging output
- Measure execution time of an individual task and groups of tasks
- Framework-agnostic library you can use with Laravel, Symfony, standalone, etc.
- PHP 8.2+
I like the output of tasks, which you can output directly or through a logging system:
echo timeWarden()->output();/*โโโโโโโโโโโโโโโโโโโโโโ TIMEWARDEN โโโโโโคโโโโโโโโโโโโโโโโโ GROUP โ TASK โ DURATION (MS) โโ โโโโโโโโโโโโโโโโโโโโโโชโโโโโโโโโโโโโโโโโชโโโโโโโโโโโโโโโโฃโ default (320.37 ms) โ Articles task โ 70.23 โโ โ Customers task โ 250.14 โโโโโโโโโโโโโโโโโโโโ Total: 320.37 ms โโโงโโโโโโโโโโโโโโโโ*/ // Send as a logif (app()->environment('local')) { Log::debug(timeWarden()->output());}
You can learn more about this package, get full installation instructions, and view the source code on GitHub.