Laravel Packages

Monitor Code Processing Time in PHP with Time Warden

Published
Monitor Code Processing Time in PHP with Time Warden image

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 function
timeWarden()->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 function
timeWarden()->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 log
if (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.

Paul Redmond photo

Staff writer at Laravel News. Full stack web developer and author.

Sponsored

masteringlaravel logo
Laravel Code Review

Get expert guidance in a few days with a Laravel code review

Visit Laravel Code Review

The latest

View all →
VMPal: Give Your AI Agent a Whole Computer image

VMPal: Give Your AI Agent a Whole Computer

Read article
Synapse: A Dev Dashboard for Laravel AI SDK Agents image

Synapse: A Dev Dashboard for Laravel AI SDK Agents

Read article
Decide with Jev: Three Questions in One Request with the Laravel AI SDK image

Decide with Jev: Three Questions in One Request with the Laravel AI SDK

Read article
Grant: Enum-Based Roles and Permissions for Laravel image

Grant: Enum-Based Roles and Permissions for Laravel

Read article
Securing Filament plugins with Plumb image

Securing Filament plugins with Plumb

Read article
LayaPHP: Self-Hosted Text Classification for PHP and Laravel image

LayaPHP: Self-Hosted Text Classification for PHP and Laravel

Read article