summaryrefslogtreecommitdiffstats
path: root/system/libraries/Output.php
diff options
context:
space:
mode:
Diffstat (limited to 'system/libraries/Output.php')
-rw-r--r--system/libraries/Output.php70
1 files changed, 65 insertions, 5 deletions
diff --git a/system/libraries/Output.php b/system/libraries/Output.php
index 1c3f0d604..b5b7c9e97 100644
--- a/system/libraries/Output.php
+++ b/system/libraries/Output.php
@@ -31,6 +31,7 @@ class CI_Output {
var $final_output;
var $cache_expiration = 0;
var $headers = array();
+ var $enable_profiler = FALSE;
function CI_Output()
{
@@ -90,6 +91,20 @@ class CI_Output {
// --------------------------------------------------------------------
/**
+ * Enable/disable Profiler
+ *
+ * @access public
+ * @param bool
+ * @return void
+ */
+ function enable_profiler($val = TRUE)
+ {
+ $this->enable_profiler = (is_bool($val)) ? $val : TRUE;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
* Set Cache
*
* @access public
@@ -123,7 +138,7 @@ class CI_Output {
*/
function _display($output = '')
{
- // Note: We can't use $obj =& _get_instance() since this function
+ // Note: We can't use $obj =& get_instance() since this function
// is sometimes called by the caching mechanism, which happens before
// it's available. Instead we'll use globals...
global $BM, $CFG;
@@ -141,7 +156,7 @@ class CI_Output {
// Parse out the elapsed time and memory usage, and
// swap the pseudo-variables with the data
- $elapsed = $BM->elapsed_time('code_igniter_start', 'code_igniter_end');
+ $elapsed = $BM->elapsed_time('total_execution_time_start', 'total_execution_time_end');
$memory = ( ! function_exists('memory_get_usage')) ? '0' : round(memory_get_usage()/1024/1024, 2).'MB';
$output = str_replace('{memory_usage}', $memory, $output);
@@ -166,14 +181,28 @@ class CI_Output {
{
@header($header);
}
- }
+ }
// Send the finalized output either directly
// to the browser or to the user's _output()
// function if it exists
- if (function_exists('_get_instance') AND method_exists($obj, '_output'))
+ if (function_exists('get_instance'))
{
- $obj->_output($output);
+ $obj =& get_instance();
+
+ if ($this->enable_profiler == TRUE)
+ {
+ $output .= $this->_run_profiler();
+ }
+
+ if (method_exists($obj, '_output'))
+ {
+ $obj->_output($output);
+ }
+ else
+ {
+ echo $output; // Send it to the browser!
+ }
}
else
{
@@ -295,6 +324,37 @@ class CI_Output {
return TRUE;
}
+ // --------------------------------------------------------------------
+
+ /**
+ * Run the Auto-profiler
+ *
+ * @access private
+ * @return string
+ */
+ function _run_profiler()
+ {
+ $obj =& get_instance();
+
+ $profile = $obj->benchmark->auto_profiler();
+
+ $output = '';
+ if (count($profile) > 0)
+ {
+ $output .= "\n\n<table cellpadding='4' cellspacing='1' border='0'>\n";
+
+ foreach ($profile as $key => $val)
+ {
+ $key = ucwords(str_replace(array('_', '-'), ' ', $key));
+ $output .= "<tr><td><strong>".$key."</strong></td><td>".$val."</td></tr>\n";
+ }
+
+ $output .= "</table>\n";
+ }
+
+ return $output;
+ }
+
}
// END Output Class
?> \ No newline at end of file