You are here

function performance_gather_summary_data in Performance Logging and Monitoring 7

Same name and namespace in other branches
  1. 6.2 performance.module \performance_gather_summary_data()
  2. 6 performance.module \performance_gather_summary_data()
  3. 7.2 performance.module \performance_gather_summary_data()

Gather performance data for external modules.

2 calls to performance_gather_summary_data()
performance_nagios in ./performance.module
Implementation of hook_nagios().
performance_prod_check_return_data in ./performance.module
Return performance data to Production Monitor.

File

./performance.module, line 1300
Logs detailed and/or summary page generation time and memory consumption for page requests. Copyright Khalid Baheyeldin 2008 of http://2bits.com

Code

function performance_gather_summary_data() {
  $go = FALSE;
  $data_list = array();

  // Data from last 15 minutes.
  $timestamp = REQUEST_TIME - 15 * 60;

  // Get data from first active store.
  foreach (performance_data_stores() as $store => $data) {
    if ($data['#enabled']) {
      $data_list = call_user_func('performance_get_data_' . $store, $timestamp);
      $go = TRUE;
      break;
    }
  }
  if (!$go) {
    return FALSE;
  }

  // Initialize variables.
  $total_rows = $total_bytes = $total_ms = $total_accesses = $total_query_time = $total_query_count = 0;
  foreach ($data_list as $data) {

    // Cast to array because of the DB API now returning row objects by default.
    $data = is_object($data) ? (array) $data : $data;
    $total_rows++;

    // Calculate running averages.
    $total_bytes += $data['bytes_avg'];
    $total_ms += $data['ms_avg'];
    $total_accesses += $data['num_accesses'];
    $total_query_time += $data['query_timer_avg'];
    $total_query_count += $data['query_count_avg'];
  }
  $results = array();
  $results['total_accesses'] = $total_accesses;

  // Protect against divide by zero.
  if ($total_rows > 0) {
    $results['ms_avg'] = number_format($total_ms / $total_rows, 1, '.', '');
    $results['ms_query'] = number_format($total_query_time / $total_rows, 1, '.', '');
    $results['query_count'] = number_format($total_query_count / $total_rows, 2, '.', '');
    $results['mb_avg'] = number_format($total_bytes / $total_rows / 1024 / 1024, 1);
  }
  else {
    $results['ms_avg'] = '';
    $results['ms_query'] = '';
    $results['mb_avg'] = '';
    $results['query_count'] = '';
  }
  return $results;
}