Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit f5b2a09

Browse files
EXPIRETIME and PEXPIRETIME
1 parent c0e839f commit f5b2a09

9 files changed

Lines changed: 85 additions & 4 deletions

redis.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1654,6 +1654,18 @@ PHP_METHOD(Redis, pexpireAt) {
16541654
}
16551655
/* }}} */
16561656

1657+
/* {{{ proto Redis::expiretime(string $key): int */
1658+
PHP_METHOD(Redis, expiretime) {
1659+
REDIS_PROCESS_KW_CMD("EXPIRETIME", redis_key_cmd, redis_long_response);
1660+
}
1661+
/* }}} */
1662+
1663+
/* {{{ proto Redis::expiretime(string $key): int */
1664+
PHP_METHOD(Redis, pexpiretime) {
1665+
REDIS_PROCESS_KW_CMD("PEXPIRETIME", redis_key_cmd, redis_long_response);
1666+
}
1667+
1668+
/* }}} */
16571669
/* {{{ proto array Redis::lSet(string key, int index, string value) */
16581670
PHP_METHOD(Redis, lSet) {
16591671
REDIS_PROCESS_KW_CMD("LSET", redis_key_long_val_cmd,

redis.stub.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,10 @@ public function expireAt(string $key, int $timestamp): bool;
120120

121121
public function failover(?array $to = null, bool $abort = false, int $timeout = 0): bool;
122122

123+
public function expiretime(string $key): Redis|int|false;
124+
125+
public function pexpiretime(string $key): Redis|int|false;
126+
123127
public function flushAll(?bool $sync = null): bool;
124128

125129
public function flushDB(?bool $sync = null): bool;

redis_arginfo.h

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: 1c32099810101448fc32ce331e2b494dabc22cc4 */
2+
* Stub hash: 177e08fec3c3ef380c1cdbab99235090c656cde4 */
33

44
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Redis___construct, 0, 0, 0)
55
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_
190190
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, timeout, IS_LONG, 0, "0")
191191
ZEND_END_ARG_INFO()
192192

193+
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_class_Redis_expiretime, 0, 1, Redis, MAY_BE_LONG|MAY_BE_FALSE)
194+
ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
195+
ZEND_END_ARG_INFO()
196+
197+
#define arginfo_class_Redis_pexpiretime arginfo_class_Redis_expiretime
198+
193199
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_Redis_flushAll, 0, 0, _IS_BOOL, 0)
194200
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, sync, _IS_BOOL, 1, "null")
195201
ZEND_END_ARG_INFO()
@@ -1042,6 +1048,8 @@ ZEND_METHOD(Redis, exists);
10421048
ZEND_METHOD(Redis, expire);
10431049
ZEND_METHOD(Redis, expireAt);
10441050
ZEND_METHOD(Redis, failover);
1051+
ZEND_METHOD(Redis, expiretime);
1052+
ZEND_METHOD(Redis, pexpiretime);
10451053
ZEND_METHOD(Redis, flushAll);
10461054
ZEND_METHOD(Redis, flushDB);
10471055
ZEND_METHOD(Redis, geoadd);
@@ -1277,6 +1285,8 @@ static const zend_function_entry class_Redis_methods[] = {
12771285
ZEND_ME(Redis, expire, arginfo_class_Redis_expire, ZEND_ACC_PUBLIC)
12781286
ZEND_ME(Redis, expireAt, arginfo_class_Redis_expireAt, ZEND_ACC_PUBLIC)
12791287
ZEND_ME(Redis, failover, arginfo_class_Redis_failover, ZEND_ACC_PUBLIC)
1288+
ZEND_ME(Redis, expiretime, arginfo_class_Redis_expiretime, ZEND_ACC_PUBLIC)
1289+
ZEND_ME(Redis, pexpiretime, arginfo_class_Redis_pexpiretime, ZEND_ACC_PUBLIC)
12801290
ZEND_ME(Redis, flushAll, arginfo_class_Redis_flushAll, ZEND_ACC_PUBLIC)
12811291
ZEND_ME(Redis, flushDB, arginfo_class_Redis_flushDB, ZEND_ACC_PUBLIC)
12821292
ZEND_ME(Redis, geoadd, arginfo_class_Redis_geoadd, ZEND_ACC_PUBLIC)

redis_cluster.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1273,6 +1273,16 @@ PHP_METHOD(RedisCluster, pexpireat) {
12731273
}
12741274
/* }}} */
12751275

1276+
/* {{{ Redis::expiretime(string $key): int */
1277+
PHP_METHOD(RedisCluster, expiretime) {
1278+
CLUSTER_PROCESS_KW_CMD("EXPIRETIME", redis_key_cmd, cluster_long_resp, 1);
1279+
}
1280+
1281+
/* {{{ Redis::pexpiretime(string $key): int */
1282+
PHP_METHOD(RedisCluster, pexpiretime) {
1283+
CLUSTER_PROCESS_KW_CMD("PEXPIRETIME", redis_key_cmd, cluster_long_resp, 1);
1284+
}
1285+
12761286
/* {{{ proto long RedisCluster::append(string key, string val) */
12771287
PHP_METHOD(RedisCluster, append) {
12781288
CLUSTER_PROCESS_KW_CMD("APPEND", redis_kv_cmd, cluster_long_resp, 0);

redis_cluster.stub.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,10 @@ public function expire(string $key, int $timeout): bool;
9292

9393
public function expireat(string $key, int $timestamp): bool;
9494

95+
public function expiretime(string $key): Redis|int|false;
96+
97+
public function pexpiretime(string $key): Redis|int|false;
98+
9599
public function flushall(string|array $node, bool $async = false): bool;
96100

97101
public function flushdb(string|array $node, bool $async = false): bool;

redis_cluster_arginfo.h

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: 45d120a35a1c256964c45c71ab91c025ea00e862 */
2+
* Stub hash: d6e8120d2edd3cb4a18baa99c6013ac428049448 */
33

44
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisCluster___construct, 0, 0, 1)
55
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,
183183
ZEND_ARG_TYPE_INFO(0, timestamp, IS_LONG, 0)
184184
ZEND_END_ARG_INFO()
185185

186+
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_class_RedisCluster_expiretime, 0, 1, Redis, MAY_BE_LONG|MAY_BE_FALSE)
187+
ZEND_ARG_TYPE_INFO(0, key, IS_STRING, 0)
188+
ZEND_END_ARG_INFO()
189+
190+
#define arginfo_class_RedisCluster_pexpiretime arginfo_class_RedisCluster_expiretime
191+
186192
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_RedisCluster_flushall, 0, 1, _IS_BOOL, 0)
187193
ZEND_ARG_TYPE_MASK(0, node, MAY_BE_STRING|MAY_BE_ARRAY, NULL)
188194
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, async, _IS_BOOL, 0, "false")
@@ -894,6 +900,8 @@ ZEND_METHOD(RedisCluster, exec);
894900
ZEND_METHOD(RedisCluster, exists);
895901
ZEND_METHOD(RedisCluster, expire);
896902
ZEND_METHOD(RedisCluster, expireat);
903+
ZEND_METHOD(RedisCluster, expiretime);
904+
ZEND_METHOD(RedisCluster, pexpiretime);
897905
ZEND_METHOD(RedisCluster, flushall);
898906
ZEND_METHOD(RedisCluster, flushdb);
899907
ZEND_METHOD(RedisCluster, geoadd);
@@ -1091,6 +1099,8 @@ static const zend_function_entry class_RedisCluster_methods[] = {
10911099
ZEND_ME(RedisCluster, exists, arginfo_class_RedisCluster_exists, ZEND_ACC_PUBLIC)
10921100
ZEND_ME(RedisCluster, expire, arginfo_class_RedisCluster_expire, ZEND_ACC_PUBLIC)
10931101
ZEND_ME(RedisCluster, expireat, arginfo_class_RedisCluster_expireat, ZEND_ACC_PUBLIC)
1102+
ZEND_ME(RedisCluster, expiretime, arginfo_class_RedisCluster_expiretime, ZEND_ACC_PUBLIC)
1103+
ZEND_ME(RedisCluster, pexpiretime, arginfo_class_RedisCluster_pexpiretime, ZEND_ACC_PUBLIC)
10941104
ZEND_ME(RedisCluster, flushall, arginfo_class_RedisCluster_flushall, ZEND_ACC_PUBLIC)
10951105
ZEND_ME(RedisCluster, flushdb, arginfo_class_RedisCluster_flushdb, ZEND_ACC_PUBLIC)
10961106
ZEND_ME(RedisCluster, geoadd, arginfo_class_RedisCluster_geoadd, ZEND_ACC_PUBLIC)

redis_cluster_legacy_arginfo.h

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: 45d120a35a1c256964c45c71ab91c025ea00e862 */
2+
* Stub hash: d6e8120d2edd3cb4a18baa99c6013ac428049448 */
33

44
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisCluster___construct, 0, 0, 1)
55
ZEND_ARG_INFO(0, name)
@@ -163,6 +163,10 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisCluster_expireat, 0, 0, 2)
163163
ZEND_ARG_INFO(0, timestamp)
164164
ZEND_END_ARG_INFO()
165165

166+
#define arginfo_class_RedisCluster_expiretime arginfo_class_RedisCluster__prefix
167+
168+
#define arginfo_class_RedisCluster_pexpiretime arginfo_class_RedisCluster__prefix
169+
166170
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisCluster_flushall, 0, 0, 1)
167171
ZEND_ARG_INFO(0, node)
168172
ZEND_ARG_INFO(0, async)
@@ -782,6 +786,8 @@ ZEND_METHOD(RedisCluster, exec);
782786
ZEND_METHOD(RedisCluster, exists);
783787
ZEND_METHOD(RedisCluster, expire);
784788
ZEND_METHOD(RedisCluster, expireat);
789+
ZEND_METHOD(RedisCluster, expiretime);
790+
ZEND_METHOD(RedisCluster, pexpiretime);
785791
ZEND_METHOD(RedisCluster, flushall);
786792
ZEND_METHOD(RedisCluster, flushdb);
787793
ZEND_METHOD(RedisCluster, geoadd);
@@ -979,6 +985,8 @@ static const zend_function_entry class_RedisCluster_methods[] = {
979985
ZEND_ME(RedisCluster, exists, arginfo_class_RedisCluster_exists, ZEND_ACC_PUBLIC)
980986
ZEND_ME(RedisCluster, expire, arginfo_class_RedisCluster_expire, ZEND_ACC_PUBLIC)
981987
ZEND_ME(RedisCluster, expireat, arginfo_class_RedisCluster_expireat, ZEND_ACC_PUBLIC)
988+
ZEND_ME(RedisCluster, expiretime, arginfo_class_RedisCluster_expiretime, ZEND_ACC_PUBLIC)
989+
ZEND_ME(RedisCluster, pexpiretime, arginfo_class_RedisCluster_pexpiretime, ZEND_ACC_PUBLIC)
982990
ZEND_ME(RedisCluster, flushall, arginfo_class_RedisCluster_flushall, ZEND_ACC_PUBLIC)
983991
ZEND_ME(RedisCluster, flushdb, arginfo_class_RedisCluster_flushdb, ZEND_ACC_PUBLIC)
984992
ZEND_ME(RedisCluster, geoadd, arginfo_class_RedisCluster_geoadd, ZEND_ACC_PUBLIC)

redis_legacy_arginfo.h

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: 1c32099810101448fc32ce331e2b494dabc22cc4 */
2+
* Stub hash: 177e08fec3c3ef380c1cdbab99235090c656cde4 */
33

44
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Redis___construct, 0, 0, 0)
55
ZEND_ARG_INFO(0, options)
@@ -174,6 +174,10 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Redis_failover, 0, 0, 0)
174174
ZEND_ARG_INFO(0, timeout)
175175
ZEND_END_ARG_INFO()
176176

177+
#define arginfo_class_Redis_expiretime arginfo_class_Redis__prefix
178+
179+
#define arginfo_class_Redis_pexpiretime arginfo_class_Redis__prefix
180+
177181
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_Redis_flushAll, 0, 0, 0)
178182
ZEND_ARG_INFO(0, sync)
179183
ZEND_END_ARG_INFO()
@@ -934,6 +938,8 @@ ZEND_METHOD(Redis, exists);
934938
ZEND_METHOD(Redis, expire);
935939
ZEND_METHOD(Redis, expireAt);
936940
ZEND_METHOD(Redis, failover);
941+
ZEND_METHOD(Redis, expiretime);
942+
ZEND_METHOD(Redis, pexpiretime);
937943
ZEND_METHOD(Redis, flushAll);
938944
ZEND_METHOD(Redis, flushDB);
939945
ZEND_METHOD(Redis, geoadd);
@@ -1169,6 +1175,8 @@ static const zend_function_entry class_Redis_methods[] = {
11691175
ZEND_ME(Redis, expire, arginfo_class_Redis_expire, ZEND_ACC_PUBLIC)
11701176
ZEND_ME(Redis, expireAt, arginfo_class_Redis_expireAt, ZEND_ACC_PUBLIC)
11711177
ZEND_ME(Redis, failover, arginfo_class_Redis_failover, ZEND_ACC_PUBLIC)
1178+
ZEND_ME(Redis, expiretime, arginfo_class_Redis_expiretime, ZEND_ACC_PUBLIC)
1179+
ZEND_ME(Redis, pexpiretime, arginfo_class_Redis_pexpiretime, ZEND_ACC_PUBLIC)
11721180
ZEND_ME(Redis, flushAll, arginfo_class_Redis_flushAll, ZEND_ACC_PUBLIC)
11731181
ZEND_ME(Redis, flushDB, arginfo_class_Redis_flushDB, ZEND_ACC_PUBLIC)
11741182
ZEND_ME(Redis, geoadd, arginfo_class_Redis_geoadd, ZEND_ACC_PUBLIC)

tests/RedisTest.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -605,6 +605,21 @@ public function testExpireAt() {
605605
$this->assertTrue($success);
606606
}
607607

608+
public function testExpiretime() {
609+
if(version_compare($this->version, "7.0.0") < 0) {
610+
$this->markTestSkipped();
611+
}
612+
613+
$now = time();
614+
615+
$this->assertTrue($this->redis->set('key1', 'value'));
616+
$this->assertTrue($this->redis->expireat('key1', $now + 10));
617+
$this->assertEquals($now + 10, $this->redis->expiretime('key1'));
618+
$this->assertEquals(1000 * ($now + 10), $this->redis->pexpiretime('key1'));
619+
620+
$this->redis->del('key1');
621+
}
622+
608623
public function testSetEx() {
609624

610625
$this->redis->del('key');

0 commit comments

Comments
 (0)