diff options
author | michael-grunder <michael.grunder@gmail.com> | 2022-10-02 02:41:52 +0300 |
---|---|---|
committer | michael-grunder <michael.grunder@gmail.com> | 2022-10-02 02:41:52 +0300 |
commit | 111191ad5192a725de1a970520d120852b2cae4b (patch) | |
tree | ddc5cf3f5e9cd56ad16a44e5761e334e600ffb99 | |
parent | c0e839f6ac45d51adbb109b246c9b3565c3b61e1 (diff) |
EXPIRETIME and PEXPIRETIMEexpiretime
-rw-r--r-- | redis.c | 12 | ||||
-rw-r--r-- | redis.stub.php | 4 | ||||
-rw-r--r-- | redis_arginfo.h | 12 | ||||
-rw-r--r-- | redis_cluster.c | 10 | ||||
-rw-r--r-- | redis_cluster.stub.php | 4 | ||||
-rw-r--r-- | redis_cluster_arginfo.h | 12 | ||||
-rw-r--r-- | redis_cluster_legacy_arginfo.h | 10 | ||||
-rw-r--r-- | redis_legacy_arginfo.h | 10 | ||||
-rw-r--r-- | tests/RedisTest.php | 15 |
9 files changed, 85 insertions, 4 deletions
@@ -1654,6 +1654,18 @@ PHP_METHOD(Redis, pexpireAt) { } /* }}} */ +/* {{{ proto Redis::expiretime(string $key): int */ +PHP_METHOD(Redis, expiretime) { + REDIS_PROCESS_KW_CMD("EXPIRETIME", redis_key_cmd, redis_long_response); +} +/* }}} */ + +/* {{{ proto Redis::expiretime(string $key): int */ +PHP_METHOD(Redis, pexpiretime) { + REDIS_PROCESS_KW_CMD("PEXPIRETIME", redis_key_cmd, redis_long_response); +} + +/* }}} */ /* {{{ proto array Redis::lSet(string key, int index, string value) */ PHP_METHOD(Redis, lSet) { REDIS_PROCESS_KW_CMD("LSET", redis_key_long_val_cmd, diff --git a/redis.stub.php b/redis.stub.php index c3740b8d..79e2096d 100644 --- a/redis.stub.php +++ b/redis.stub.php @@ -120,6 +120,10 @@ class Redis { public function failover(?array $to = null, bool $abort = false, int $timeout = 0): bool; + public function expiretime(string $key): Redis|int|false; + + public function pexpiretime(string $key): Redis|int|false; + public function flushAll(?bool $sync = null): bool; public function flushDB(?bool $sync = null): bool; diff --git a/redis_arginfo.h b/redis_arginfo.h index 7c2cdd43..86f6373d 100644 --- a/redis_arginfo.h +++ b/redis_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 1c32099810101448fc32ce331e2b494dabc22cc4 */ + * Stub hash: 177e08fec3c3ef380c1cdbab99235090c656cde4 */ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Redis___construct, 0, 0, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, options, IS_ARRAY, 0, "null") @@ -190,6 +190,12 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_Redis_failover, 0, 0, _IS_ ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, timeout, IS_LONG, 0, "0") ZEND_END_ARG_INFO() +ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_class_Redis_expiretime, 0, 1, Redis, MAY_BE_LONG|MAY_BE_FALSE) + ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0) +ZEND_END_ARG_INFO() + +#define arginfo_class_Redis_pexpiretime arginfo_class_Redis_expiretime + ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_Redis_flushAll, 0, 0, _IS_BOOL, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, sync, _IS_BOOL, 1, "null") ZEND_END_ARG_INFO() @@ -1042,6 +1048,8 @@ ZEND_METHOD(Redis, exists); ZEND_METHOD(Redis, expire); ZEND_METHOD(Redis, expireAt); ZEND_METHOD(Redis, failover); +ZEND_METHOD(Redis, expiretime); +ZEND_METHOD(Redis, pexpiretime); ZEND_METHOD(Redis, flushAll); ZEND_METHOD(Redis, flushDB); ZEND_METHOD(Redis, geoadd); @@ -1277,6 +1285,8 @@ static const zend_function_entry class_Redis_methods[] = { ZEND_ME(Redis, expire, arginfo_class_Redis_expire, ZEND_ACC_PUBLIC) ZEND_ME(Redis, expireAt, arginfo_class_Redis_expireAt, ZEND_ACC_PUBLIC) ZEND_ME(Redis, failover, arginfo_class_Redis_failover, ZEND_ACC_PUBLIC) + ZEND_ME(Redis, expiretime, arginfo_class_Redis_expiretime, ZEND_ACC_PUBLIC) + ZEND_ME(Redis, pexpiretime, arginfo_class_Redis_pexpiretime, ZEND_ACC_PUBLIC) ZEND_ME(Redis, flushAll, arginfo_class_Redis_flushAll, ZEND_ACC_PUBLIC) ZEND_ME(Redis, flushDB, arginfo_class_Redis_flushDB, ZEND_ACC_PUBLIC) ZEND_ME(Redis, geoadd, arginfo_class_Redis_geoadd, ZEND_ACC_PUBLIC) diff --git a/redis_cluster.c b/redis_cluster.c index cee00ae2..00fa3801 100644 --- a/redis_cluster.c +++ b/redis_cluster.c @@ -1273,6 +1273,16 @@ PHP_METHOD(RedisCluster, pexpireat) { } /* }}} */ +/* {{{ Redis::expiretime(string $key): int */ +PHP_METHOD(RedisCluster, expiretime) { + CLUSTER_PROCESS_KW_CMD("EXPIRETIME", redis_key_cmd, cluster_long_resp, 1); +} + +/* {{{ Redis::pexpiretime(string $key): int */ +PHP_METHOD(RedisCluster, pexpiretime) { + CLUSTER_PROCESS_KW_CMD("PEXPIRETIME", redis_key_cmd, cluster_long_resp, 1); +} + /* {{{ proto long RedisCluster::append(string key, string val) */ PHP_METHOD(RedisCluster, append) { CLUSTER_PROCESS_KW_CMD("APPEND", redis_kv_cmd, cluster_long_resp, 0); diff --git a/redis_cluster.stub.php b/redis_cluster.stub.php index 31ba4ef6..f750e072 100644 --- a/redis_cluster.stub.php +++ b/redis_cluster.stub.php @@ -92,6 +92,10 @@ class RedisCluster { public function expireat(string $key, int $timestamp): bool; + public function expiretime(string $key): Redis|int|false; + + public function pexpiretime(string $key): Redis|int|false; + public function flushall(string|array $node, bool $async = false): bool; public function flushdb(string|array $node, bool $async = false): bool; diff --git a/redis_cluster_arginfo.h b/redis_cluster_arginfo.h index bbf10c92..dbfb3026 100644 --- a/redis_cluster_arginfo.h +++ b/redis_cluster_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 45d120a35a1c256964c45c71ab91c025ea00e862 */ + * Stub hash: d6e8120d2edd3cb4a18baa99c6013ac428049448 */ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisCluster___construct, 0, 0, 1) ZEND_ARG_TYPE_INFO(0, name, IS_STRING, 1) @@ -183,6 +183,12 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_RedisCluster_expireat, 0, ZEND_ARG_TYPE_INFO(0, timestamp, IS_LONG, 0) ZEND_END_ARG_INFO() +ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_class_RedisCluster_expiretime, 0, 1, Redis, MAY_BE_LONG|MAY_BE_FALSE) + ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0) +ZEND_END_ARG_INFO() + +#define arginfo_class_RedisCluster_pexpiretime arginfo_class_RedisCluster_expiretime + ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_RedisCluster_flushall, 0, 1, _IS_BOOL, 0) ZEND_ARG_TYPE_MASK(0, node, MAY_BE_STRING|MAY_BE_ARRAY, NULL) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, async, _IS_BOOL, 0, "false") @@ -894,6 +900,8 @@ ZEND_METHOD(RedisCluster, exec); ZEND_METHOD(RedisCluster, exists); ZEND_METHOD(RedisCluster, expire); ZEND_METHOD(RedisCluster, expireat); +ZEND_METHOD(RedisCluster, expiretime); +ZEND_METHOD(RedisCluster, pexpiretime); ZEND_METHOD(RedisCluster, flushall); ZEND_METHOD(RedisCluster, flushdb); ZEND_METHOD(RedisCluster, geoadd); @@ -1091,6 +1099,8 @@ static const zend_function_entry class_RedisCluster_methods[] = { ZEND_ME(RedisCluster, exists, arginfo_class_RedisCluster_exists, ZEND_ACC_PUBLIC) ZEND_ME(RedisCluster, expire, arginfo_class_RedisCluster_expire, ZEND_ACC_PUBLIC) ZEND_ME(RedisCluster, expireat, arginfo_class_RedisCluster_expireat, ZEND_ACC_PUBLIC) + ZEND_ME(RedisCluster, expiretime, arginfo_class_RedisCluster_expiretime, ZEND_ACC_PUBLIC) + ZEND_ME(RedisCluster, pexpiretime, arginfo_class_RedisCluster_pexpiretime, ZEND_ACC_PUBLIC) ZEND_ME(RedisCluster, flushall, arginfo_class_RedisCluster_flushall, ZEND_ACC_PUBLIC) ZEND_ME(RedisCluster, flushdb, arginfo_class_RedisCluster_flushdb, ZEND_ACC_PUBLIC) ZEND_ME(RedisCluster, geoadd, arginfo_class_RedisCluster_geoadd, ZEND_ACC_PUBLIC) diff --git a/redis_cluster_legacy_arginfo.h b/redis_cluster_legacy_arginfo.h index 5669c8be..a1538169 100644 --- a/redis_cluster_legacy_arginfo.h +++ b/redis_cluster_legacy_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 45d120a35a1c256964c45c71ab91c025ea00e862 */ + * Stub hash: d6e8120d2edd3cb4a18baa99c6013ac428049448 */ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisCluster___construct, 0, 0, 1) ZEND_ARG_INFO(0, name) @@ -163,6 +163,10 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisCluster_expireat, 0, 0, 2) ZEND_ARG_INFO(0, timestamp) ZEND_END_ARG_INFO() +#define arginfo_class_RedisCluster_expiretime arginfo_class_RedisCluster__prefix + +#define arginfo_class_RedisCluster_pexpiretime arginfo_class_RedisCluster__prefix + ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisCluster_flushall, 0, 0, 1) ZEND_ARG_INFO(0, node) ZEND_ARG_INFO(0, async) @@ -782,6 +786,8 @@ ZEND_METHOD(RedisCluster, exec); ZEND_METHOD(RedisCluster, exists); ZEND_METHOD(RedisCluster, expire); ZEND_METHOD(RedisCluster, expireat); +ZEND_METHOD(RedisCluster, expiretime); +ZEND_METHOD(RedisCluster, pexpiretime); ZEND_METHOD(RedisCluster, flushall); ZEND_METHOD(RedisCluster, flushdb); ZEND_METHOD(RedisCluster, geoadd); @@ -979,6 +985,8 @@ static const zend_function_entry class_RedisCluster_methods[] = { ZEND_ME(RedisCluster, exists, arginfo_class_RedisCluster_exists, ZEND_ACC_PUBLIC) ZEND_ME(RedisCluster, expire, arginfo_class_RedisCluster_expire, ZEND_ACC_PUBLIC) ZEND_ME(RedisCluster, expireat, arginfo_class_RedisCluster_expireat, ZEND_ACC_PUBLIC) + ZEND_ME(RedisCluster, expiretime, arginfo_class_RedisCluster_expiretime, ZEND_ACC_PUBLIC) + ZEND_ME(RedisCluster, pexpiretime, arginfo_class_RedisCluster_pexpiretime, ZEND_ACC_PUBLIC) ZEND_ME(RedisCluster, flushall, arginfo_class_RedisCluster_flushall, ZEND_ACC_PUBLIC) ZEND_ME(RedisCluster, flushdb, arginfo_class_RedisCluster_flushdb, ZEND_ACC_PUBLIC) ZEND_ME(RedisCluster, geoadd, arginfo_class_RedisCluster_geoadd, ZEND_ACC_PUBLIC) diff --git a/redis_legacy_arginfo.h b/redis_legacy_arginfo.h index 7954c6f2..0a0f7016 100644 --- a/redis_legacy_arginfo.h +++ b/redis_legacy_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 1c32099810101448fc32ce331e2b494dabc22cc4 */ + * Stub hash: 177e08fec3c3ef380c1cdbab99235090c656cde4 */ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Redis___construct, 0, 0, 0) ZEND_ARG_INFO(0, options) @@ -174,6 +174,10 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Redis_failover, 0, 0, 0) ZEND_ARG_INFO(0, timeout) ZEND_END_ARG_INFO() +#define arginfo_class_Redis_expiretime arginfo_class_Redis__prefix + +#define arginfo_class_Redis_pexpiretime arginfo_class_Redis__prefix + ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Redis_flushAll, 0, 0, 0) ZEND_ARG_INFO(0, sync) ZEND_END_ARG_INFO() @@ -934,6 +938,8 @@ ZEND_METHOD(Redis, exists); ZEND_METHOD(Redis, expire); ZEND_METHOD(Redis, expireAt); ZEND_METHOD(Redis, failover); +ZEND_METHOD(Redis, expiretime); +ZEND_METHOD(Redis, pexpiretime); ZEND_METHOD(Redis, flushAll); ZEND_METHOD(Redis, flushDB); ZEND_METHOD(Redis, geoadd); @@ -1169,6 +1175,8 @@ static const zend_function_entry class_Redis_methods[] = { ZEND_ME(Redis, expire, arginfo_class_Redis_expire, ZEND_ACC_PUBLIC) ZEND_ME(Redis, expireAt, arginfo_class_Redis_expireAt, ZEND_ACC_PUBLIC) ZEND_ME(Redis, failover, arginfo_class_Redis_failover, ZEND_ACC_PUBLIC) + ZEND_ME(Redis, expiretime, arginfo_class_Redis_expiretime, ZEND_ACC_PUBLIC) + ZEND_ME(Redis, pexpiretime, arginfo_class_Redis_pexpiretime, ZEND_ACC_PUBLIC) ZEND_ME(Redis, flushAll, arginfo_class_Redis_flushAll, ZEND_ACC_PUBLIC) ZEND_ME(Redis, flushDB, arginfo_class_Redis_flushDB, ZEND_ACC_PUBLIC) ZEND_ME(Redis, geoadd, arginfo_class_Redis_geoadd, ZEND_ACC_PUBLIC) diff --git a/tests/RedisTest.php b/tests/RedisTest.php index 2e4402f3..4d022a6e 100644 --- a/tests/RedisTest.php +++ b/tests/RedisTest.php @@ -605,6 +605,21 @@ class Redis_Test extends TestSuite $this->assertTrue($success); } + public function testExpiretime() { + if(version_compare($this->version, "7.0.0") < 0) { + $this->markTestSkipped(); + } + + $now = time(); + + $this->assertTrue($this->redis->set('key1', 'value')); + $this->assertTrue($this->redis->expireat('key1', $now + 10)); + $this->assertEquals($now + 10, $this->redis->expiretime('key1')); + $this->assertEquals(1000 * ($now + 10), $this->redis->pexpiretime('key1')); + + $this->redis->del('key1'); + } + public function testSetEx() { $this->redis->del('key'); |