123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- <?php
- namespace Predis\Command;
- class ServerInfo extends AbstractCommand
- {
-
- public function getId()
- {
- return 'INFO';
- }
-
- public function parseResponse($data)
- {
- $info = array();
- $infoLines = preg_split('/\r?\n/', $data);
- foreach ($infoLines as $row) {
- if (strpos($row, ':') === false) {
- continue;
- }
- list($k, $v) = $this->parseRow($row);
- $info[$k] = $v;
- }
- return $info;
- }
-
- public function parseRow($row)
- {
- list($k, $v) = explode(':', $row, 2);
- if (!preg_match('/^db\d+$/', $k)) {
- if ($k === 'allocation_stats') {
- $v = $this->parseAllocationStats($v);
- }
- } else {
- $v = $this->parseDatabaseStats($v);
- }
- return array($k, $v);
- }
-
- protected function parseDatabaseStats($str)
- {
- $db = array();
- foreach (explode(',', $str) as $dbvar) {
- list($dbvk, $dbvv) = explode('=', $dbvar);
- $db[trim($dbvk)] = $dbvv;
- }
- return $db;
- }
-
- protected function parseAllocationStats($str)
- {
- $stats = array();
- foreach (explode(',', $str) as $kv) {
- @list($size, $objects, $extra) = explode('=', $kv);
-
- if (isset($extra)) {
- $size = ">=$objects";
- $objects = $extra;
- }
- $stats[$size] = $objects;
- }
- return $stats;
- }
- }
|