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:
authorPavlo Yatsukhnenko <yatsukhnenko@gmail.com>2021-09-20 20:50:07 +0300
committerPavlo Yatsukhnenko <yatsukhnenko@gmail.com>2022-04-11 21:57:12 +0300
commit947a2d3897f2be2d51fb4672c351df9835724e78 (patch)
tree062d5fbdc10730806098af4a11a67ba922a3fe4d /redis.c
parent77ee15c243933c2f279babed8b32c6b65aa12421 (diff)
Issue #1894
Diffstat (limited to 'redis.c')
-rw-r--r--redis.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/redis.c b/redis.c
index a1233ac1..617906d0 100644
--- a/redis.c
+++ b/redis.c
@@ -904,6 +904,50 @@ PHP_METHOD(Redis, renameNx)
}
/* }}} */
+/** {{{ proto bool Redis::reset()
+ */
+PHP_METHOD(Redis, reset)
+{
+ char *response;
+ int response_len;
+ RedisSock *redis_sock;
+ smart_string cmd = {0};
+ zend_bool ret = 0;
+
+ if ((redis_sock = redis_sock_get(getThis(), 0)) == NULL) {
+ RETURN_FALSE;
+ }
+
+ if (IS_PIPELINE(redis_sock)) {
+ php_error_docref(NULL, E_ERROR, "Reset ins't allowed in pipeline mode!");
+ RETURN_FALSE;
+ }
+
+ redis_cmd_init_sstr(&cmd, 0, "RESET", 5);
+
+ REDIS_PROCESS_REQUEST(redis_sock, cmd.c, cmd.len);
+
+ if ((response = redis_sock_read(redis_sock, &response_len)) != NULL) {
+ ret = REDIS_STRCMP_STATIC(response, response_len, "+RESET");
+ efree(response);
+ }
+
+ if (!ret) {
+ if (IS_ATOMIC(redis_sock)) {
+ RETURN_FALSE;
+ }
+ REDIS_THROW_EXCEPTION("Reset failed in multi mode!", 0);
+ RETURN_ZVAL(getThis(), 1, 0);
+ }
+
+ free_reply_callbacks(redis_sock);
+ redis_sock->status = REDIS_SOCK_STATUS_CONNECTED;
+ redis_sock->mode = ATOMIC;
+ redis_sock->dbNumber = 0;
+ redis_sock->watching = 0;
+
+ RETURN_TRUE;
+}
/* }}} */
/* {{{ proto string Redis::get(string key)