diff --git a/common/framework/Debug.php b/common/framework/Debug.php index b72642e5e..556ca5b49 100644 --- a/common/framework/Debug.php +++ b/common/framework/Debug.php @@ -23,8 +23,15 @@ class Debug protected static $_slow_widgets = array(); protected static $_remote_requests = array(); protected static $_slow_remote_requests = array(); - protected static $_session_time = 0; - protected static $_query_time = 0; + + /** + * Store timers here. + */ + protected static $_timers = [ + 'session' => 0, + 'remote' => 0, + 'query' => 0, + ]; /** * Enable log collection. @@ -227,8 +234,10 @@ class Debug self::$_slow_widgets = array(); self::$_remote_requests = array(); self::$_slow_remote_requests = array(); - self::$_session_time = 0; - self::$_query_time = 0; + foreach (self::$_timers as $key => $val) + { + self::$_timers[$key] = 0; + } } /** @@ -244,14 +253,22 @@ class Debug } /** - * Add session start time. + * Add time to a timer variable. * - * @param float $session_start_time + * @param string $type + * @param float $time * @return void */ - public static function addSessionStartTime(float $session_start_time): void + public static function addTime(string $type, float $time): void { - self::$_session_time += $session_start_time; + if (isset(self::$_timers[$type])) + { + self::$_timers[$type] += $time; + } + else + { + self::$_timers[$type] = $time; + } } /** @@ -449,7 +466,7 @@ class Debug } // Record query time. - self::$_query_time += $query_object->query_time; + self::$_timers['query'] += $query_object->query_time; // Add the query to the error log if the result wasn't successful. if ($query['result'] === 'error') @@ -597,12 +614,7 @@ class Debug ); self::$_remote_requests[] = $request_object; - - if (!isset($GLOBALS['__remote_request_elapsed__'])) - { - $GLOBALS['__remote_request_elapsed__'] = 0; - } - $GLOBALS['__remote_request_elapsed__'] += $request_object->elapsed_time; + self::$_timers['remote'] += $request_object->elapsed_time; if ($request_object->elapsed_time && is_numeric($request_object->elapsed_time) && $request_object->elapsed_time >= (self::$_config['log_slow_remote_requests'] ?? 1)) { @@ -890,12 +902,12 @@ class Debug 'memory' => memory_get_peak_usage(), 'timing' => (object)array( 'total' => sprintf('%0.4f sec', microtime(true) - \RX_MICROTIME), - 'db_query' => sprintf('%0.4f sec (count: %d)', self::$_query_time, count(self::$_queries)), - 'db_class' => sprintf('%0.4f sec', max(0, $db->getTotalElapsedTime() - self::$_query_time)), + 'db_query' => sprintf('%0.4f sec (count: %d)', self::$_timers['query'], count(self::$_queries)), + 'db_class' => sprintf('%0.4f sec', max(0, $db->getTotalElapsedTime() - self::$_timers['query'])), 'layout' => sprintf('%0.4f sec', $GLOBALS['__layout_compile_elapsed__'] ?? 0), 'widget' => sprintf('%0.4f sec', $GLOBALS['__widget_excute_elapsed__'] ?? 0), - 'remote' => sprintf('%0.4f sec', $GLOBALS['__remote_request_elapsed__'] ?? 0), - 'session' => sprintf('%0.4f sec', self::$_session_time), + 'remote' => sprintf('%0.4f sec', self::$_timers['remote']), + 'session' => sprintf('%0.4f sec', self::$_timers['session']), 'xmlparse' => sprintf('%0.4f sec', $GLOBALS['__xmlparse_elapsed__'] ?? 0), 'template' => sprintf('%0.4f sec (count: %d)', $GLOBALS['__template_elapsed__'] ?? 0, $GLOBALS['__TemplateHandlerCalled__'] ?? 0), 'trans' => sprintf('%0.4f sec', $GLOBALS['__trans_content_elapsed__'] ?? 0), diff --git a/common/framework/HTTP.php b/common/framework/HTTP.php index d0d39304d..243b38161 100644 --- a/common/framework/HTTP.php +++ b/common/framework/HTTP.php @@ -324,56 +324,13 @@ class HTTP Debug::addRemoteRequest($log); }; } + else + { + $settings['on_stats'] = function($stats) { + Debug::addTime('remote', $stats->getTransferTime()); + }; + } return $settings; } - - /** - * Record a request with the Debug class. - * - * @param string $url - * @param int $status_code - * @param float $elapsed_time - * @return void - */ - protected static function _debug(string $url, int $status_code = 0, float $elapsed_time = 0): void - { - if (!isset($GLOBALS['__remote_request_elapsed__'])) - { - $GLOBALS['__remote_request_elapsed__'] = 0; - } - $GLOBALS['__remote_request_elapsed__'] += $elapsed_time; - - if (Debug::isEnabledForCurrentUser()) - { - $log = array(); - $log['url'] = $url; - $log['status'] = $status_code; - $log['elapsed_time'] = $elapsed_time; - $log['called_file'] = $log['called_line'] = $log['called_method'] = null; - $log['backtrace'] = []; - - if (in_array('slow_remote_requests', config('debug.display_content'))) - { - $bt = debug_backtrace(\DEBUG_BACKTRACE_IGNORE_ARGS); - foreach ($bt as $no => $call) - { - if($call['file'] !== __FILE__ && $call['file'] !== \RX_BASEDIR . 'classes/file/FileHandler.class.php') - { - $log['called_file'] = $bt[$no]['file']; - $log['called_line'] = $bt[$no]['line']; - $next = $no + 1; - if (isset($bt[$next])) - { - $log['called_method'] = $bt[$next]['class'].$bt[$next]['type'].$bt[$next]['function']; - $log['backtrace'] = array_slice($bt, $next, 1); - } - break; - } - } - } - - - } - } } diff --git a/common/framework/Session.php b/common/framework/Session.php index cbaac89c6..52027e80e 100644 --- a/common/framework/Session.php +++ b/common/framework/Session.php @@ -100,7 +100,7 @@ class Session trigger_error('Session cannot be started', \E_USER_WARNING); return false; } - Debug::addSessionStartTime(microtime(true) - $session_start_time); + Debug::addTime('session', microtime(true) - $session_start_time); // Mark the session as started. self::$_started = true;