Skip to content

Commit

Permalink
feat: add PerformanceMetrics filter
Browse files Browse the repository at this point in the history
  • Loading branch information
kenjis committed Oct 17, 2023
1 parent 6a9bd46 commit e858581
Showing 1 changed file with 61 additions and 0 deletions.
61 changes: 61 additions & 0 deletions system/Filters/PerformanceMetrics.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
<?php

/**
* This file is part of CodeIgniter 4 framework.
*
* (c) CodeIgniter Foundation <admin@codeigniter.com>
*
* For the full copyright and license information, please view
* the LICENSE file that was distributed with this source code.
*/

namespace CodeIgniter\Filters;

use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use Config\Services;

/**
* Performance Metrics filter
*/
class PerformanceMetrics implements FilterInterface
{
/**
* We don't need to do anything here.
*
* @param array|null $arguments
*/
public function before(RequestInterface $request, $arguments = null)
{
}

/**
* Replaces the performance metrics.
*
* @param array|null $arguments
*
* @return void
*/
public function after(RequestInterface $request, ResponseInterface $response, $arguments = null)
{
$body = $response->getBody();

if ($body !== null) {
$benchmark = Services::timer();

$output = str_replace(
[
'{elapsed_time}',
'{memory_usage}',
],
[
(string) $benchmark->getElapsedTime('total_execution'),
number_format(memory_get_peak_usage() / 1024 / 1024, 3),
],
$body
);

$response->setBody($output);
}
}
}

0 comments on commit e858581

Please sign in to comment.