Monitor Code Processing Time in PHP with Time Warden

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:

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.


The post Monitor Code Processing Time in PHP with Time Warden appeared first on Laravel News.

Join the Laravel Newsletter to get all the latest Laravel articles like this directly in your inbox.