CI =& get_instance(); $this->CI->load->language('profiler'); } // -------------------------------------------------------------------- /** * 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 * * @access private * @return array */ function _compile_benchmarks() { $profile = array(); foreach ($this->CI->benchmark->marker as $key => $val) { // We match the "end" marker so that the list ends // up in the order that it was defined if (preg_match("/(.+?)_end/i", $key, $match)) { if (isset($this->CI->benchmark->marker[$match[1].'_end']) AND isset($this->CI->benchmark->marker[$match[1].'_start'])) { $profile[$match[1]] = $this->CI->benchmark->elapsed_time($match[1].'_start', $key); } } } // Build a table containing the profile data. // Note: At some point we should turn this into a template that can // be modified. We also might want to make this data available to be logged $output = "\n\n"; $output .= '
"; return $output; } // -------------------------------------------------------------------- /** * Compile Queries * * @access private * @return string */ function _compile_queries() { $dbs = array(); // Let's determine which databases are currently connected to foreach (get_object_vars($this->CI) as $CI_object) { if (is_object($CI_object) && is_subclass_of(get_class($CI_object), 'CI_DB') ) { $dbs[] = $CI_object; } } if (count($dbs) == 0) { $output = "\n\n"; $output .= '"; return $output; } // Load the text helper so we can highlight the SQL $this->CI->load->helper('text'); // Key words we want bolded $highlight = array('SELECT', 'DISTINCT', 'FROM', 'WHERE', 'AND', 'LEFT JOIN', 'ORDER BY', 'GROUP BY', 'LIMIT', 'INSERT', 'INTO', 'VALUES', 'UPDATE', 'OR', 'HAVING', 'OFFSET', 'NOT IN', 'IN', 'LIKE', 'NOT LIKE', 'COUNT', 'MAX', 'MIN', 'ON', 'AS', 'AVG', 'SUM', '(', ')'); $output = "\n\n"; foreach ($dbs as $db) { $output .= '"; } return $output; } // -------------------------------------------------------------------- /** * Compile $_GET Data * * @access private * @return string */ function _compile_get() { $output = "\n\n"; $output .= '"; return $output; } // -------------------------------------------------------------------- /** * Compile $_POST Data * * @access private * @return string */ function _compile_post() { $output = "\n\n"; $output .= '"; return $output; } // -------------------------------------------------------------------- /** * Show query string * * @access private * @return string */ function _compile_uri_string() { $output = "\n\n"; $output .= '"; return $output; } // -------------------------------------------------------------------- /** * Show the controller and function that were called * * @access private * @return string */ function _compile_controller_info() { $output = "\n\n"; $output .= '"; return $output; } // -------------------------------------------------------------------- /** * Compile memory usage * * Display total used memory * * @access public * @return string */ function _compile_memory_usage() { $output = "\n\n"; $output .= '"; return $output; } // -------------------------------------------------------------------- /** * Run the Profiler * * @access private * @return string */ function run() { $output = "