Skip to content
forked from yiisoft/profiler

The package provides an ability to record performance profiles.

License

Notifications You must be signed in to change notification settings

alamagus/profiler

 
 

Repository files navigation

Yii Profiler


Latest Stable Version Total Downloads Build status Scrutinizer Code Quality Code Coverage Mutation testing badge static analysis type-coverage

The package provides an ability to record performance profiles.

Requirements

  • PHP 7.4 or higher.

Installation

The package could be installed via composer:

composer require --dev yiisoft/profiler --prefer-dist

If there will be no @runtime alias in yiisoft/aliases configuration defined, application will throw "Invalid path alias" error.

To solve it, install the following package yiisoft/aliases via composer:

composer require yiisoft/aliases --prefer-dist

And set alias @runtime:

use Yiisoft\Aliases\Aliases;

$aliases = new Aliases([
    '@root' => __DIR__,
]);
$aliases->set('@runtime', '@root/runtime');

General usage

Profiling

<?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');

Getting profiler messages

$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
                )

        )

)

Find profiler messages with a given token

$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
                )

        )

)

Saving messages to storage

// obtain profiler
$profiler = getProfiler();
// send profiler messages to targets
$profiler->flush();

Testing

Unit testing

The package is tested with PHPUnit. To run tests:

./vendor/bin/phpunit

Mutation testing

The package tests are checked with Infection mutation framework with Infection Static Analysis Plugin. To run it:

./vendor/bin/roave-infection-static-analysis-plugin

Static analysis

The code is statically analyzed with Psalm. To run static analysis:

./vendor/bin/psalm

License

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.

Support the project

Open Collective

Follow updates

Official website Twitter Telegram Facebook Slack

About

The package provides an ability to record performance profiles.

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • PHP 100.0%