summaryrefslogtreecommitdiff
path: root/kohana/libraries/Profiler.php
diff options
context:
space:
mode:
Diffstat (limited to 'kohana/libraries/Profiler.php')
-rw-r--r--kohana/libraries/Profiler.php271
1 files changed, 0 insertions, 271 deletions
diff --git a/kohana/libraries/Profiler.php b/kohana/libraries/Profiler.php
deleted file mode 100644
index 47d82ace..00000000
--- a/kohana/libraries/Profiler.php
+++ /dev/null
@@ -1,271 +0,0 @@
-<?php defined('SYSPATH') OR die('No direct access allowed.');
-/**
- * Adds useful information to the bottom of the current page for debugging and optimization purposes.
- *
- * Benchmarks - The times and memory usage of benchmarks run by the Benchmark library.
- * Database - The raw SQL and number of affected rows of Database queries.
- * Session Data - Data stored in the current session if using the Session library.
- * POST Data - The name and values of any POST data submitted to the current page.
- * Cookie Data - All cookies sent for the current request.
- *
- * $Id: Profiler.php 4090 2009-03-19 01:27:45Z bharat $
- *
- * @package Profiler
- * @author Kohana Team
- * @copyright (c) 2007-2008 Kohana Team
- * @license http://kohanaphp.com/license.html
- */
-class Profiler_Core {
-
- protected $profiles = array();
- protected $show;
-
- public function __construct()
- {
- // Add all built in profiles to event
- Event::add('profiler.run', array($this, 'benchmarks'));
- Event::add('profiler.run', array($this, 'database'));
- Event::add('profiler.run', array($this, 'session'));
- Event::add('profiler.run', array($this, 'post'));
- Event::add('profiler.run', array($this, 'cookies'));
-
- // Add profiler to page output automatically
- Event::add('system.display', array($this, 'render'));
-
- Kohana::log('debug', 'Profiler Library initialized');
- }
-
- /**
- * Magic __call method. Creates a new profiler section object.
- *
- * @param string input type
- * @param string input name
- * @return object
- */
- public function __call($method, $args)
- {
- if ( ! $this->show OR (is_array($this->show) AND ! in_array($args[0], $this->show)))
- return FALSE;
-
- // Class name
- $class = 'Profiler_'.ucfirst($method);
-
- $class = new $class();
-
- $this->profiles[$args[0]] = $class;
-
- return $class;
- }
-
- /**
- * Disables the profiler for this page only.
- * Best used when profiler is autoloaded.
- *
- * @return void
- */
- public function disable()
- {
- // Removes itself from the event queue
- Event::clear('system.display', array($this, 'render'));
- }
-
- /**
- * Render the profiler. Output is added to the bottom of the page by default.
- *
- * @param boolean return the output if TRUE
- * @return void|string
- */
- public function render($return = FALSE)
- {
- $start = microtime(TRUE);
-
- $get = isset($_GET['profiler']) ? explode(',', $_GET['profiler']) : array();
- $this->show = empty($get) ? Kohana::config('profiler.show') : $get;
-
- Event::run('profiler.run', $this);
-
- $styles = '';
- foreach ($this->profiles as $profile)
- {
- $styles .= $profile->styles();
- }
-
- // Don't display if there's no profiles
- if (empty($this->profiles))
- return;
-
- // Load the profiler view
- $data = array
- (
- 'profiles' => $this->profiles,
- 'styles' => $styles,
- 'execution_time' => microtime(TRUE) - $start
- );
- $view = new View('kohana_profiler', $data);
-
- // Return rendered view if $return is TRUE
- if ($return == TRUE)
- return $view->render();
-
- // Add profiler data to the output
- if (stripos(Kohana::$output, '</body>') !== FALSE)
- {
- // Closing body tag was found, insert the profiler data before it
- Kohana::$output = str_ireplace('</body>', $view->render().'</body>', Kohana::$output);
- }
- else
- {
- // Append the profiler data to the output
- Kohana::$output .= $view->render();
- }
- }
-
- /**
- * Benchmark times and memory usage from the Benchmark library.
- *
- * @return void
- */
- public function benchmarks()
- {
- if ( ! $table = $this->table('benchmarks'))
- return;
-
- $table->add_column();
- $table->add_column('kp-column kp-data');
- $table->add_column('kp-column kp-data');
- $table->add_column('kp-column kp-data');
- $table->add_row(array('Benchmarks', 'Time', 'Count', 'Memory'), 'kp-title', 'background-color: #FFE0E0');
-
- $benchmarks = Benchmark::get(TRUE);
-
- // Moves the first benchmark (total execution time) to the end of the array
- $benchmarks = array_slice($benchmarks, 1) + array_slice($benchmarks, 0, 1);
-
- text::alternate();
- foreach ($benchmarks as $name => $benchmark)
- {
- // Clean unique id from system benchmark names
- $name = ucwords(str_replace(array('_', '-'), ' ', str_replace(SYSTEM_BENCHMARK.'_', '', $name)));
-
- $data = array($name, number_format($benchmark['time'], 3), $benchmark['count'], number_format($benchmark['memory'] / 1024 / 1024, 2).'MB');
- $class = text::alternate('', 'kp-altrow');
-
- if ($name == 'Total Execution')
- $class = 'kp-totalrow';
-
- $table->add_row($data, $class);
- }
- }
-
- /**
- * Database query benchmarks.
- *
- * @return void
- */
- public function database()
- {
- if ( ! $table = $this->table('database'))
- return;
-
- $table->add_column();
- $table->add_column('kp-column kp-data');
- $table->add_column('kp-column kp-data');
- $table->add_row(array('Queries', 'Time', 'Rows'), 'kp-title', 'background-color: #E0FFE0');
-
- $queries = Database::$benchmarks;
-
- text::alternate();
- $total_time = $total_rows = 0;
- foreach ($queries as $query)
- {
- $data = array($query['query'], number_format($query['time'], 3), $query['rows']);
- $class = text::alternate('', 'kp-altrow');
- $table->add_row($data, $class);
- $total_time += $query['time'];
- $total_rows += $query['rows'];
- }
-
- $data = array('Total: ' . count($queries), number_format($total_time, 3), $total_rows);
- $table->add_row($data, 'kp-totalrow');
- }
-
- /**
- * Session data.
- *
- * @return void
- */
- public function session()
- {
- if (empty($_SESSION)) return;
-
- if ( ! $table = $this->table('session'))
- return;
-
- $table->add_column('kp-name');
- $table->add_column();
- $table->add_row(array('Session', 'Value'), 'kp-title', 'background-color: #CCE8FB');
-
- text::alternate();
- foreach($_SESSION as $name => $value)
- {
- if (is_object($value))
- {
- $value = get_class($value).' [object]';
- }
-
- $data = array($name, $value);
- $class = text::alternate('', 'kp-altrow');
- $table->add_row($data, $class);
- }
- }
-
- /**
- * POST data.
- *
- * @return void
- */
- public function post()
- {
- if (empty($_POST)) return;
-
- if ( ! $table = $this->table('post'))
- return;
-
- $table->add_column('kp-name');
- $table->add_column();
- $table->add_row(array('POST', 'Value'), 'kp-title', 'background-color: #E0E0FF');
-
- text::alternate();
- foreach($_POST as $name => $value)
- {
- $data = array($name, $value);
- $class = text::alternate('', 'kp-altrow');
- $table->add_row($data, $class);
- }
- }
-
- /**
- * Cookie data.
- *
- * @return void
- */
- public function cookies()
- {
- if (empty($_COOKIE)) return;
-
- if ( ! $table = $this->table('cookies'))
- return;
-
- $table->add_column('kp-name');
- $table->add_column();
- $table->add_row(array('Cookies', 'Value'), 'kp-title', 'background-color: #FFF4D7');
-
- text::alternate();
- foreach($_COOKIE as $name => $value)
- {
- $data = array($name, $value);
- $class = text::alternate('', 'kp-altrow');
- $table->add_row($data, $class);
- }
- }
-} \ No newline at end of file