onigoetz/profiler

Next Generation PHP Profiler for Laravel

Installs: 1 325

Dependents: 0

Stars: 34

Watchers: 2

Forks: 4

Language: PHP

1.0.0-beta 2013-06-30 11:28 UTC

README

DISCONTINUED

This project is no longer maintained and I won't provide support for it.

I recommend to use Laravel Debugbar or PHP Debugbar

Installation

Add this dependency to composer.json with this command: composer require-dev onigoetz/profiler:dev-master

And add this in your configuration/app.php file. This will allow the Profiler to only load locally and will not clutter your production build.

    'providers' => array(
        'Onigoetz\Profiler\Support\Laravel\ProfilerServiceProvider',
        ...
    ),
    'aliases' => array(
        ...
        'Stopwatch' => 'Onigoetz\Profiler\Stopwatch'
        ...
    )

Then do ./artisan asset:publish onigoetz/profiler to publish the javascript/css files

Configuration

By default, the profiler will run only in environment that are not "production"

You can override all default values by doing ./artisan config:publish onigoetz/profiler and editing the profiler.php file.

Options

  • environments An array of environments on which the profiler may be shown
  • assets_auto If set to true (default) it will include its assets itself, you can disable this to add the assets to your own build process
  • panels An array of classes that extend Onigoetz\Profiler\Panel you can add your own panels and reorder them.
  • slow_query Threshold in milliseconds after which it is considered slow

Panels

All panels are work in progress for the moment, many changes may happen

Time

This panel provides a way to watch for events in a graphical way.

You can profile anything anywhere in your code by using the Stopwatch facade.

It's a facade for a stopwatch heavily inspired from Stopwatch Symfony component, the difference is that mine doesn't support sections As any Laravel Facade you don't have to initialize it, just use it

Example:

Stopwatch::start('stuff to benchmark');

//do your stuff

Stopwatch::stop('stuff to benchmark');

Database

Provide a list of executed queries and their bindings. Also checks for duplicated queries, based on raw SQL without bindings, small but useful tool to track down which query could be improved

Router

List of declared routes with some more informations ( route name, filter, hostname, action …) Also highlights the current route.

(The same informations as the ./artisan routes + highlighted current route)

Variables

Dump of $_GET, $_POST, $_FILES, $_COOKIE, Session, $_SERVER and $_ENV variables

Log

Registers a new log handler to output the logs from the current run

Files

List of loaded files and their size

Bookmarklets

A list of useful bookmarklets + loaded scripts on the current page

How it works

Each panel is a class that has some methods to do it's stuff

  • $data All data must be stored here, so we can serialize the class easily
  • register() called on App::before() here you can register some classes or events
  • getData() retrieve the data and store in $this->data
  • getName() return a string with the name, will be used as an id and class in HTML
  • render() return a View with the rendered panel
  • renderTitle() return a PanelTitle object with the title properties