Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/phpredis/phpredis.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cluster_library.c30
-rw-r--r--cluster_library.h4
-rw-r--r--redis_cluster.c22
-rw-r--r--redis_cluster.h2
4 files changed, 55 insertions, 3 deletions
diff --git a/cluster_library.c b/cluster_library.c
index 67e8fc75..e4354fc3 100644
--- a/cluster_library.c
+++ b/cluster_library.c
@@ -1221,6 +1221,9 @@ PHPAPI int cluster_send_slot(redisCluster *c, short slot, char *cmd,
return -1;
}
+ // Update our reply slot
+ c->reply_slot = slot;
+
return 0;
}
@@ -1794,6 +1797,33 @@ PHPAPI int cluster_scan_resp(INTERNAL_FUNCTION_PARAMETERS, redisCluster *c,
return SUCCESS;
}
+/* INFO response */
+PHPAPI void cluster_info_resp(INTERNAL_FUNCTION_PARAMETERS, redisCluster *c,
+ void *ctx)
+{
+ zval *z_result;
+ char *info, *p;
+
+ // Read our bulk response
+ if((info = redis_sock_read_bulk_reply(SLOT_SOCK(c,c->reply_slot),
+ c->reply_len TSRMLS_CC))==NULL)
+ {
+ CLUSTER_RETURN_FALSE(c);
+ }
+
+ /* Parse response, free memory */
+ z_result = redis_parse_info_response(info);
+ efree(info);
+
+ // Return our array
+ if(CLUSTER_IS_ATOMIC(c)) {
+ *return_value = *z_result;
+ efree(z_result);
+ } else {
+ add_next_index_zval(c->multi_resp, z_result);
+ }
+}
+
/* MULTI BULK response loop where we might pull the next one */
PHPAPI zval *cluster_zval_mbulk_resp(INTERNAL_FUNCTION_PARAMETERS,
redisCluster *c, int pull, mbulk_cb cb)
diff --git a/cluster_library.h b/cluster_library.h
index 1c916fac..9d5d3e72 100644
--- a/cluster_library.h
+++ b/cluster_library.h
@@ -414,6 +414,10 @@ PHPAPI void cluster_msetnx_resp(INTERNAL_FUNCTION_PARAMETERS,
PHPAPI int cluster_scan_resp(INTERNAL_FUNCTION_PARAMETERS,
redisCluster *c, REDIS_SCAN_TYPE type, long *it);
+/* INFO response handler */
+PHPAPI void cluster_info_resp(INTERNAL_FUNCTION_PARAMETERS,
+ redisCluster *c, void *ctx);
+
/* MULTI BULK processing callbacks */
int mbulk_resp_loop(RedisSock *redis_sock, zval *z_result,
long long count, void *ctx TSRMLS_DC);
diff --git a/redis_cluster.c b/redis_cluster.c
index 296c3785..00977abf 100644
--- a/redis_cluster.c
+++ b/redis_cluster.c
@@ -169,7 +169,7 @@ zend_function_entry redis_cluster_functions[] = {
PHP_ME(RedisCluster, sscan, arginfo_kscan, ZEND_ACC_PUBLIC)
PHP_ME(RedisCluster, zscan, arginfo_kscan, ZEND_ACC_PUBLIC)
PHP_ME(RedisCluster, hscan, arginfo_kscan, ZEND_ACC_PUBLIC)
-
+
PHP_ME(RedisCluster, getoption, NULL, ZEND_ACC_PUBLIC)
PHP_ME(RedisCluster, setoption, NULL, ZEND_ACC_PUBLIC)
@@ -191,6 +191,7 @@ zend_function_entry redis_cluster_functions[] = {
PHP_ME(RedisCluster, dbsize, NULL, ZEND_ACC_PUBLIC)
PHP_ME(RedisCluster, bgrewriteaof, NULL, ZEND_ACC_PUBLIC)
PHP_ME(RedisCluster, lastsave, NULL, ZEND_ACC_PUBLIC)
+ PHP_ME(RedisCluster, info, NULL, ZEND_ACC_PUBLIC)
{NULL, NULL, NULL}
};
@@ -2126,22 +2127,25 @@ PHP_METHOD(RedisCluster, scan) {
Z_LVAL_P(z_it) = it;
}
+/* }}} */
/* {{{ proto RedisCluster::sscan(string key, long it [string pat, long cnt]) */
PHP_METHOD(RedisCluster, sscan) {
cluster_kscan_cmd(INTERNAL_FUNCTION_PARAM_PASSTHRU, TYPE_SSCAN);
}
+/* }}} */
/* {{{ proto RedisCluster::zscan(string key, long it [string pat, long cnt]) */
PHP_METHOD(RedisCluster, zscan) {
cluster_kscan_cmd(INTERNAL_FUNCTION_PARAM_PASSTHRU, TYPE_ZSCAN);
}
+/* }}} */
/* {{{ proto RedisCluster::hscan(string key, long it [string pat, long cnt]) */
PHP_METHOD(RedisCluster, hscan) {
cluster_kscan_cmd(INTERNAL_FUNCTION_PARAM_PASSTHRU, TYPE_HSCAN);
}
-
+/* }}} */
/* {{{ proto RedisCluster::save(string key)
* proto RedisCluster::save(string host, long port) */
@@ -2149,6 +2153,7 @@ PHP_METHOD(RedisCluster, save) {
cluster_empty_node_cmd(INTERNAL_FUNCTION_PARAM_PASSTHRU, "SAVE", TYPE_LINE,
cluster_bool_resp);
}
+/* }}} */
/* {{{ proto RedisCluster::bgsave(string key)
* proto RedisCluster::bgsave(string host, long port) */
@@ -2156,6 +2161,7 @@ PHP_METHOD(RedisCluster, bgsave) {
cluster_empty_node_cmd(INTERNAL_FUNCTION_PARAM_PASSTHRU, "BGSAVE",
TYPE_LINE, cluster_bool_resp);
}
+/* }}} */
/* {{{ proto RedisCluster::flushdb(string key)
* proto RedisCluster::flushdb(string host, long port) */
@@ -2163,6 +2169,7 @@ PHP_METHOD(RedisCluster, flushdb) {
cluster_empty_node_cmd(INTERNAL_FUNCTION_PARAM_PASSTHRU, "FLUSHDB",
TYPE_LINE, cluster_bool_resp);
}
+/* }}} */
/* {{{ proto RedisCluster::flushall(string key)
* proto RedisCluster::flushall(string host, long port) */
@@ -2170,6 +2177,7 @@ PHP_METHOD(RedisCluster, flushall) {
cluster_empty_node_cmd(INTERNAL_FUNCTION_PARAM_PASSTHRU, "FLUSHALL",
TYPE_LINE, cluster_bool_resp);
}
+/* }}} */
/* {{{ proto RedisCluster::dbsize(string key)
* proto RedisCluster::dbsize(string host, long port) */
@@ -2177,6 +2185,7 @@ PHP_METHOD(RedisCluster, dbsize) {
cluster_empty_node_cmd(INTERNAL_FUNCTION_PARAM_PASSTHRU, "DBSIZE",
TYPE_LINE, cluster_bool_resp);
}
+/* }}} */
/* {{{ proto RedisCluster::bgrewriteaof(string key)
* proto RedisCluster::bgrewriteaof(string host, long port) */
@@ -2184,6 +2193,7 @@ PHP_METHOD(RedisCluster, bgrewriteaof) {
cluster_empty_node_cmd(INTERNAL_FUNCTION_PARAM_PASSTHRU, "BGREWRITEAOF",
TYPE_LINE, cluster_bool_resp);
}
+/* }}} */
/* {{{ proto RedisCluster::lastsave(string key)
* proto RedisCluster::lastsave(string host, long port) */
@@ -2191,6 +2201,14 @@ PHP_METHOD(RedisCluster, lastsave) {
cluster_empty_node_cmd(INTERNAL_FUNCTION_PARAM_PASSTHRU, "LASTSAVE",
TYPE_INT, cluster_long_resp);
}
+/* }}} */
+/* {{{ proto RedisCluster::info(string key)
+ * proto RedisCluster::info(string host, long port) */
+PHP_METHOD(RedisCluster, info) {
+ cluster_empty_node_cmd(INTERNAL_FUNCTION_PARAM_PASSTHRU, "INFO",
+ TYPE_BULK, cluster_info_resp);
+}
+/* }}} */
/* vim: set tabstop=4 softtabstops=4 noexpandtab shiftwidth=4: */
diff --git a/redis_cluster.h b/redis_cluster.h
index 5d8c9c9e..e0635101 100644
--- a/redis_cluster.h
+++ b/redis_cluster.h
@@ -222,7 +222,7 @@ PHP_METHOD(RedisCluster, unsubscribe);
PHP_METHOD(RedisCluster, punsubscribe);
PHP_METHOD(RedisCluster, eval);
PHP_METHOD(RedisCluster, evalsha);
-PHP_METHOD(RedisCluter, info);
+PHP_METHOD(RedisCluster, info);
/* SCAN and friends */
PHP_METHOD(RedisCluster, scan);