From ee71c80dd20bcfc60169af3eb1f628229ca30d67 Mon Sep 17 00:00:00 2001 From: Derek Jones Date: Wed, 10 Mar 2010 10:05:05 -0600 Subject: added ability to enable/disable individual sections of the Profiler --- system/application/config/profiler.php | 17 +++++++ system/core/Output.php | 28 +++++++++++- system/language/english/profiler_lang.php | 1 + system/libraries/Profiler.php | 74 ++++++++++++++++++++++++++----- 4 files changed, 108 insertions(+), 12 deletions(-) create mode 100644 system/application/config/profiler.php (limited to 'system') 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 @@ +enable_profiler = (is_bool($val)) ? $val : TRUE; } + // -------------------------------------------------------------------- + + /** + * 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; + } + } + // -------------------------------------------------------------------- /** @@ -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 and tags // we will remove them and add them back after we insert the profile data if (preg_match("|.*?|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,14 +34,59 @@ 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 * @@ -49,7 +94,7 @@ class CI_Profiler { * 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 = "
"; + $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 .= '

'.$this->CI->lang->line('profiler_no_profiles').'

'; + } + $output .= '
'; return $output; -- cgit v1.2.3-24-g4f1b