예제 #1
0
function getRequestPerSecReview($conn, $serverName, $hostName, $period)
{
    $params = array('server_name' => $serverName, 'created_at' => date('Y-m-d H:i:s', strtotime('-' . $period)));
    $hostCondition = '';
    if ($hostName != 'all') {
        $params['hostname'] = $hostName;
        $hostCondition = 'AND hostname = :hostname';
    }
    $sql = '
        SELECT
            created_at, avg(req_per_sec) as req_per_sec, hostname
        FROM
            ipm_report_by_hostname_and_server
        WHERE
            server_name = :server_name
            ' . $hostCondition . '
            AND created_at > :created_at
        GROUP BY
            ' . SqlUtils::getDateGroupExpression($period) . ', hostname
        ORDER BY
            created_at
    ';
    $data = $conn->fetchAll($sql, $params);
    $rpqData = array('data' => array(), 'hosts' => array());
    $hostCount = 0;
    foreach ($data as &$item) {
        $t = strtotime($item['created_at']);
        $date = date('Y,', $t) . (date('n', $t) - 1) . date(',d,H,i', $t);
        $parsedHostname = '_' . preg_replace('/\\W/', '_', $item['hostname']);
        $rpqData['data'][$date][] = array('created_at' => $item['created_at'], 'hostname' => $item['hostname'], 'parsed_hostname' => $parsedHostname, 'req_per_sec' => number_format($item['req_per_sec'], 2, '.', ''));
        if (!isset($rpqData['hosts'][$parsedHostname])) {
            $rpqData['hosts'][$parsedHostname]['color'] = Utils::generateColor();
            $rpqData['hosts'][$parsedHostname]['host'] = $item['hostname'];
            $hostCount++;
        }
    }
    if ($hostCount > 1) {
        $sql = '
            SELECT
                created_at, avg(req_per_sec) as req_per_sec
            FROM
                ipm_report_by_server_name USE INDEX (irsn_ca)
            WHERE
                server_name = :server_name
                AND created_at > :created_at
            GROUP BY
                ' . SqlUtils::getDateGroupExpression($period) . '
            ORDER BY
                created_at
        ';
        $data = $conn->fetchAll($sql, $params);
        $rpqData['hosts']['_']['color'] = Utils::generateColor();
        $rpqData['hosts']['_']['host'] = '_';
        foreach ($data as &$item) {
            $t = strtotime($item['created_at']);
            $date = date('Y,', $t) . (date('n', $t) - 1) . date(',d,H,i', $t);
            $rpqData['data'][$date][] = array('created_at' => $item['created_at'], 'hostname' => '_', 'parsed_hostname' => '_', 'req_per_sec' => number_format($item['req_per_sec'], 2, '.', ''));
        }
    }
    ksort($rpqData['hosts']);
    return $rpqData;
}