The package provides an ability to record performance profiles.
- PHP 7.4 or higher.
The package could be installed via composer:
composer require --dev yiisoft/profiler --prefer-dist
<?php
require __DIR__ . '/vendor/autoload.php';
use Psr\Log\NullLogger;
use Yiisoft\Profiler\Profiler;
use Yiisoft\Profiler\Target\LogTarget;
$logger = new NullLogger();
$target = new LogTarget($logger);
$profiler = new Profiler($logger, [$target]);
$profiler->begin('test');
//...some code
$profiler->end('test');
Nested profiling
$profiler->begin('test');
//...some code
$profiler->begin('test');
//...some code
$profiler->end('test');
//...some code
$profiler->end('test');
$messages = $profiler->getMessages();
print_r($messages);
Output
Array
(
[0] => Yiisoft\Profiler\Message Object
(
[level:Yiisoft\Profiler\Message:private] => application
[token:Yiisoft\Profiler\Message:private] => test
[context:Yiisoft\Profiler\Message:private] => Array
(
[token] => test
[category] => application
[nestedLevel] => 0
[time] => 1614703708.4328
[beginTime] => 1614703708.4328
[beginMemory] => 7696440
[endTime] => 1614703708.4331
[endMemory] => 7702392
[duration] => 0.0003058910369873
[memoryDiff] => 5952
)
)
)
$profiler->begin('test');
//...some code
$profiler->end('test');
$profiler->begin('another test');
//...some code
$profiler->end('another test');
$messages = $profiler->findMessages('another test');
print_r($messages);
Output
Array
(
[0] => Yiisoft\Profiler\Message Object
(
[level:Yiisoft\Profiler\Message:private] => application
[token:Yiisoft\Profiler\Message:private] => another test
[context:Yiisoft\Profiler\Message:private] => Array
(
[token] => another test
[category] => application
[nestedLevel] => 0
[time] => 1614703716.4328
[beginTime] => 1614703716.4328
[beginMemory] => 7696440
[endTime] => 1614703716.4331
[endMemory] => 7702392
[duration] => 0.0003058910369873
[memoryDiff] => 5952
)
)
)
// obtain profiler
$profiler = getProfiler();
// send profiler messages to targets
$profiler->flush();
The package is tested with PHPUnit. To run tests:
./vendor/bin/phpunit
The package tests are checked with Infection mutation framework with Infection Static Analysis Plugin. To run it:
./vendor/bin/roave-infection-static-analysis-plugin
The code is statically analyzed with Psalm. To run static analysis:
./vendor/bin/psalm
The Yii Profiler is free software. It is released under the terms of the BSD License.
Please see LICENSE
for more information.
Maintained by Yii Software.