summaryrefslogtreecommitdiffstats
path: root/system
diff options
context:
space:
mode:
authorDerek Jones <derek.jones@ellislab.com>2010-03-10 17:05:05 +0100
committerDerek Jones <derek.jones@ellislab.com>2010-03-10 17:05:05 +0100
commitee71c80dd20bcfc60169af3eb1f628229ca30d67 (patch)
treea8cfc4369123b0227a8fc75254f88d97718aec7e /system
parentcc64e97e502ce60491811b27e50b768f2517ba9b (diff)
added ability to enable/disable individual sections of the Profiler
Diffstat (limited to 'system')
-rw-r--r--system/application/config/profiler.php17
-rw-r--r--system/core/Output.php28
-rw-r--r--system/language/english/profiler_lang.php1
-rw-r--r--system/libraries/Profiler.php74
4 files changed, 108 insertions, 12 deletions
diff --git a/system/application/config/profiler.php b/system/application/config/profiler.php
new file mode 100644
index 000000000..f30432d9a
--- /dev/null
+++ b/system/application/config/profiler.php
@@ -0,0 +1,17 @@
+<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
+/*
+| -------------------------------------------------------------------------
+| Profiler Sections
+| -------------------------------------------------------------------------
+| This file lets you determine whether or not various sections of Profiler
+| data are displayed when the Profiler is enabled.
+| Please see the user guide for info:
+|
+| http://codeigniter.com/user_guide/general/profiling.html
+|
+*/
+
+
+
+/* End of file profiler.php */
+/* Location: ./system/application/config/profiler.php */ \ No newline at end of file
diff --git a/system/core/Output.php b/system/core/Output.php
index ad92accd6..0dcf2e46f 100644
--- a/system/core/Output.php
+++ b/system/core/Output.php
@@ -34,6 +34,8 @@ class CI_Output {
var $enable_profiler = FALSE;
var $parse_exec_vars = TRUE; // whether or not to parse variables like {elapsed_time} and {memory_usage}
+ var $_profiler_sections = array();
+
function CI_Output()
{
log_message('debug', "Output Class Initialized");
@@ -143,6 +145,25 @@ class CI_Output {
}
// --------------------------------------------------------------------
+
+ /**
+ * Set Profiler Sections
+ *
+ * Allows override of default / config settings for Profiler section display
+ *
+ * @access public
+ * @param array
+ * @return void
+ */
+ function set_profiler_sections($sections)
+ {
+ foreach ($sections as $section => $enable)
+ {
+ $this->_profiler_sections[$section] = ($enable !== FALSE) ? TRUE : FALSE;
+ }
+ }
+
+ // --------------------------------------------------------------------
/**
* Set Cache
@@ -258,7 +279,12 @@ class CI_Output {
if ($this->enable_profiler == TRUE)
{
$CI->load->library('profiler');
-
+
+ if ( ! empty($this->_profiler_sections))
+ {
+ $CI->profiler->set_sections($this->_profiler_sections);
+ }
+
// If the output data contains closing </body> and </html> tags
// we will remove them and add them back after we insert the profile data
if (preg_match("|</body>.*?</html>|is", $output))
diff --git a/system/language/english/profiler_lang.php b/system/language/english/profiler_lang.php
index bf2183004..7876331f9 100644
--- a/system/language/english/profiler_lang.php
+++ b/system/language/english/profiler_lang.php
@@ -16,6 +16,7 @@ $lang['profiler_no_post'] = 'No POST data exists';
$lang['profiler_no_get'] = 'No GET data exists';
$lang['profiler_no_uri'] = 'No URI data exists';
$lang['profiler_no_memory'] = 'Memory Usage Unavailable';
+$lang['profiler_no_profiles'] = 'No Profile data - all Profiler sections have been disabled.';
/* End of file profiler_lang.php */
/* Location: ./system/language/english/profiler_lang.php */ \ No newline at end of file
diff --git a/system/libraries/Profiler.php b/system/libraries/Profiler.php
index bf20f1722..b2c008fc0 100644
--- a/system/libraries/Profiler.php
+++ b/system/libraries/Profiler.php
@@ -34,22 +34,67 @@ class CI_Profiler {
var $CI;
- function CI_Profiler()
+ var $_available_sections = array(
+ 'benchmarks',
+ 'config',
+ 'controller_info',
+ 'get',
+ 'http_headers',
+ 'memory_usage',
+ 'post',
+ 'queries',
+ 'uri_string'
+ );
+
+ function CI_Profiler($config = array())
{
$this->CI =& get_instance();
$this->CI->load->language('profiler');
+
+ // default all sections to display
+ foreach ($this->_available_sections as $section)
+ {
+ if ( ! isset($config[$section]))
+ {
+ $this->_compile_{$section} = TRUE;
+ }
+ }
+
+ $this->set_sections($config);
}
// --------------------------------------------------------------------
/**
+ * Set Sections
+ *
+ * Sets the private _compile_* properties to enable/disable Profiler sections
+ *
+ * @access public
+ * @param mixed
+ * @return void
+ */
+ function set_sections($config)
+ {
+ foreach ($config as $method => $enable)
+ {
+ if (in_array($method, $this->_available_sections))
+ {
+ $this->_compile_{$method} = ($enable !== FALSE) ? TRUE : FALSE;
+ }
+ }
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
* Auto Profiler
*
* This function cycles through the entire array of mark points and
* matches any two points that are named identically (ending in "_start"
* and "_end" respectively). It then compiles the execution times for
* all points and returns it as an array
- *
+ * @PHP4 - all methods should be declared private
* @access private
* @return array
*/
@@ -438,16 +483,23 @@ class CI_Profiler {
function run()
{
$output = "<div id='codeigniter_profiler' style='clear:both;background-color:#fff;padding:10px;'>";
+ $fields_displayed = 0;
+
+ foreach ($this->_available_sections as $section)
+ {
+ if ($this->_compile_{$section} !== FALSE)
+ {
+ $func = "_compile_{$section}";
+ $output .= $this->{$func}();
+ $fields_displayed++;
+ }
+ }
- $output .= $this->_compile_uri_string();
- $output .= $this->_compile_controller_info();
- $output .= $this->_compile_memory_usage();
- $output .= $this->_compile_benchmarks();
- $output .= $this->_compile_get();
- $output .= $this->_compile_post();
- $output .= $this->_compile_queries();
- $output .= $this->_compile_config();
- $output .= $this->_compile_http_headers();
+ if ($fields_displayed == 0)
+ {
+ $output .= '<p style="border:1px solid #5a0099;padding:10px;margin:20px 0;background-color:#eee">'.$this->CI->lang->line('profiler_no_profiles').'</p>';
+ }
+
$output .= '</div>';
return $output;