mirror of
https://github.com/predis/predis.git
synced 2026-08-24 12:09:32 +00:00
4e6ed3f26d
This is a starting point to add a documentation of the whole set of APIs and classes of Predis. The next step will be to actually improve and extend it.
116 lines
2.5 KiB
PHP
116 lines
2.5 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of the Predis package.
|
|
*
|
|
* (c) Daniele Alessandri <suppakilla@gmail.com>
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace Predis\Commands;
|
|
|
|
/**
|
|
* @link http://redis.io/commands/info
|
|
* @author Daniele Alessandri <suppakilla@gmail.com>
|
|
*/
|
|
class ServerInfo extends Command
|
|
{
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function getId()
|
|
{
|
|
return 'INFO';
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
protected function onPrefixKeys(Array $arguments, $prefix)
|
|
{
|
|
/* NOOP */
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
protected function canBeHashed()
|
|
{
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* {@inheritdoc}
|
|
*/
|
|
public function parseResponse($data)
|
|
{
|
|
$info = array();
|
|
$infoLines = explode("\r\n", $data, -1);
|
|
|
|
foreach ($infoLines as $row) {
|
|
@list($k, $v) = explode(':', $row);
|
|
|
|
if ($row === '' || !isset($v)) {
|
|
continue;
|
|
}
|
|
|
|
if (!preg_match('/^db\d+$/', $k)) {
|
|
if ($k === 'allocation_stats') {
|
|
$info[$k] = $this->parseAllocationStats($v);
|
|
continue;
|
|
}
|
|
$info[$k] = $v;
|
|
}
|
|
else {
|
|
$info[$k] = $this->parseDatabaseStats($v);
|
|
}
|
|
}
|
|
|
|
return $info;
|
|
}
|
|
|
|
/**
|
|
* Parses the reply buffer and extracts the statistics of each logical DB.
|
|
*
|
|
* @param string $str Reply buffer.
|
|
* @return array
|
|
*/
|
|
protected function parseDatabaseStats($str)
|
|
{
|
|
$db = array();
|
|
|
|
foreach (explode(',', $str) as $dbvar) {
|
|
list($dbvk, $dbvv) = explode('=', $dbvar);
|
|
$db[trim($dbvk)] = $dbvv;
|
|
}
|
|
|
|
return $db;
|
|
}
|
|
|
|
/**
|
|
* Parses the reply buffer and extracts the allocation statistics.
|
|
*
|
|
* @param string $str Reply buffer.
|
|
* @return array
|
|
*/
|
|
protected function parseAllocationStats($str)
|
|
{
|
|
$stats = array();
|
|
|
|
foreach (explode(',', $str) as $kv) {
|
|
@list($size, $objects, $extra) = explode('=', $kv);
|
|
|
|
// hack to prevent incorrect values when parsing the >=256 key
|
|
if (isset($extra)) {
|
|
$size = ">=$objects";
|
|
$objects = $extra;
|
|
}
|
|
$stats[$size] = $objects;
|
|
}
|
|
|
|
return $stats;
|
|
}
|
|
}
|