예제 #1
0
    switch ($groupBy) {
        case 'is_new_visitor':
            if (preg_match("/\"{$key}\";b:([01])/", $data, $matches)) {
                return $matches[1];
            }
            break;
        default:
            // remote_addr, http_secure, http_host, http_user_agent, request_uri, is_new_visitor
            if (preg_match("/\"{$key}\";s:\\d+:\"([^\"]+)\"/", $data, $matches)) {
                return $matches[1];
            }
            break;
    }
    return 'N/A';
};
$client = $redisSession->_redisClient(TRUE)->connect();
$groupedData = array();
$cursor = 0;
while (1) {
    try {
        $result = $client->__call('scan', array($cursor, 'MATCH', $sessionPattern, 'COUNT', 10000));
        list($cursor, $keys) = $result;
    } catch (CredisException $e) {
        if ($e->getMessage() != "unknown command 'scan'") {
            throw $e;
        }
        $keys = $client->keys($sessionPattern);
        $cursor = 0;
    }
    foreach ($keys as $sessionId) {
        $sessionData = $redisSession->_inspectSession($sessionId);