diff options
-rw-r--r-- | PHPINFO | 5 | ||||
-rw-r--r-- | REFLECTION | 719 | ||||
-rw-r--r-- | php-pecl-redis6.spec | 145 | ||||
-rw-r--r-- | redis-upstream.patch | 116 |
4 files changed, 785 insertions, 200 deletions
@@ -2,7 +2,7 @@ redis Redis Support => enabled -Redis Version => 6.0.2 +Redis Version => 6.3.0RC1 Redis Sentinel Version => 1.0 Available serializers => php, json, igbinary, msgpack Available compression => lzf, zstd, lz4 @@ -39,4 +39,7 @@ redis.session.locking_enabled => 0 => 0 redis.session.lock_expire => 0 => 0 redis.session.lock_retries => 100 => 100 redis.session.lock_wait_time => 20000 => 20000 +redis.session.lock_failure_readonly => 0 => 0 redis.session.early_refresh => 0 => 0 +redis.session.compression => none => none +redis.session.compression_level => 3 => 3 @@ -1,4 +1,4 @@ -Extension [ <persistent> extension #122 redis version 6.0.2 ] { +Extension [ <persistent> extension #143 redis version 6.3.0RC1 ] { - Dependencies { Dependency [ igbinary (Required) ] @@ -101,15 +101,24 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { Entry [ redis.session.lock_wait_time <ALL> ] Current = '20000' } + Entry [ redis.session.lock_failure_readonly <ALL> ] + Current = '0' + } Entry [ redis.session.early_refresh <ALL> ] Current = '0' } + Entry [ redis.session.compression <ALL> ] + Current = 'none' + } + Entry [ redis.session.compression_level <ALL> ] + Current = '3' + } } - Classes [6] { Class [ <internal:redis> class Redis ] { - - Constants [49] { + - Constants [52] { Constant [ public int REDIS_NOT_FOUND ] { 0 } Constant [ public int REDIS_STRING ] { 1 } Constant [ public int REDIS_SET ] { 2 } @@ -117,6 +126,7 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { Constant [ public int REDIS_ZSET ] { 4 } Constant [ public int REDIS_HASH ] { 5 } Constant [ public int REDIS_STREAM ] { 6 } + Constant [ public int REDIS_VECTORSET ] { 7 } Constant [ public int ATOMIC ] { 0 } Constant [ public int MULTI ] { 1 } Constant [ public int PIPELINE ] { 2 } @@ -128,6 +138,7 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { Constant [ public int OPT_REPLY_LITERAL ] { 8 } Constant [ public int OPT_COMPRESSION_LEVEL ] { 9 } Constant [ public int OPT_NULL_MULTIBULK_AS_NULL ] { 10 } + Constant [ public int OPT_PACK_IGNORE_NUMBERS ] { 15 } Constant [ public int SERIALIZER_NONE ] { 0 } Constant [ public int SERIALIZER_PHP ] { 1 } Constant [ public int SERIALIZER_IGBINARY ] { 2 } @@ -137,6 +148,7 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { Constant [ public int COMPRESSION_LZF ] { 1 } Constant [ public int COMPRESSION_ZSTD ] { 2 } Constant [ public int COMPRESSION_ZSTD_DEFAULT ] { 3 } + Constant [ public int COMPRESSION_ZSTD_MIN ] { -131072 } Constant [ public int COMPRESSION_ZSTD_MAX ] { 22 } Constant [ public int COMPRESSION_LZ4 ] { 3 } Constant [ public int OPT_SCAN ] { 4 } @@ -170,7 +182,7 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Properties [0] { } - - Methods [254] { + - Methods [287] { Method [ <internal:redis, ctor> public method __construct ] { - Parameters [1] { @@ -280,6 +292,16 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Return [ Redis|bool ] } + Method [ <internal:redis> public method waitaof ] { + + - Parameters [3] { + Parameter #0 [ <required> int $numlocal ] + Parameter #1 [ <required> int $numreplicas ] + Parameter #2 [ <required> int $timeout ] + } + - Return [ Redis|array|false ] + } + Method [ <internal:redis> public method bitcount ] { - Parameters [4] { @@ -514,6 +536,15 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Return [ Redis|int|false ] } + Method [ <internal:redis> public method delifeq ] { + + - Parameters [2] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> mixed $value ] + } + - Return [ Redis|int|false ] + } + Method [ <internal, deprecated:redis> public method delete ] { - Parameters [2] { @@ -535,7 +566,7 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Parameters [1] { Parameter #0 [ <required> string $key ] } - - Return [ Redis|string ] + - Return [ Redis|string|false ] } Method [ <internal:redis> public method echo ] { @@ -819,6 +850,14 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Return [ mixed ] } + Method [ <internal:redis> public method getWithMeta ] { + + - Parameters [1] { + Parameter #0 [ <required> string $key ] + } + - Return [ Redis|array|false ] + } + Method [ <internal:redis> public method getAuth ] { - Parameters [0] { @@ -902,6 +941,20 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Return [ int ] } + Method [ <internal:redis> public method serverName ] { + + - Parameters [0] { + } + - Return [ string|false ] + } + + Method [ <internal:redis> public method serverVersion ] { + + - Parameters [0] { + } + - Return [ string|false ] + } + Method [ <internal:redis> public method getRange ] { - Parameters [3] { @@ -995,6 +1048,15 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Return [ Redis|array|false ] } + Method [ <internal:redis> public method hGetWithMeta ] { + + - Parameters [2] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> string $member ] + } + - Return [ mixed ] + } + Method [ <internal:redis> public method hIncrBy ] { - Parameters [3] { @@ -1040,6 +1102,35 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Return [ Redis|array|false ] } + Method [ <internal:redis> public method hgetex ] { + + - Parameters [3] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> array $fields ] + Parameter #2 [ <optional> array|string|null $expiry = null ] + } + - Return [ Redis|array|false ] + } + + Method [ <internal:redis> public method hsetex ] { + + - Parameters [3] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> array $fields ] + Parameter #2 [ <optional> ?array $expiry = null ] + } + - Return [ Redis|int|false ] + } + + Method [ <internal:redis> public method hgetdel ] { + + - Parameters [2] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> array $fields ] + } + - Return [ Redis|array|false ] + } + Method [ <internal:redis> public method hMset ] { - Parameters [2] { @@ -1055,15 +1146,14 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { Parameter #0 [ <required> string $key ] Parameter #1 [ <optional> ?array $options = null ] } - - Return [ Redis|array|string ] + - Return [ Redis|array|string|false ] } Method [ <internal:redis> public method hSet ] { - - Parameters [3] { + - Parameters [2] { Parameter #0 [ <required> string $key ] - Parameter #1 [ <required> string $member ] - Parameter #2 [ <required> mixed $value ] + Parameter #1 [ <optional> mixed ...$fields_and_vals ] } - Return [ Redis|int|false ] } @@ -1073,7 +1163,7 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Parameters [3] { Parameter #0 [ <required> string $key ] Parameter #1 [ <required> string $field ] - Parameter #2 [ <required> string $value ] + Parameter #2 [ <required> mixed $value ] } - Return [ Redis|bool ] } @@ -1095,17 +1185,127 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Return [ Redis|array|false ] } + Method [ <internal:redis> public method hexpire ] { + + - Parameters [4] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> int $ttl ] + Parameter #2 [ <required> array $fields ] + Parameter #3 [ <optional> ?string $mode = NULL ] + } + - Return [ Redis|array|false ] + } + + Method [ <internal:redis> public method hpexpire ] { + + - Parameters [4] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> int $ttl ] + Parameter #2 [ <required> array $fields ] + Parameter #3 [ <optional> ?string $mode = NULL ] + } + - Return [ Redis|array|false ] + } + + Method [ <internal:redis> public method hexpireat ] { + + - Parameters [4] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> int $time ] + Parameter #2 [ <required> array $fields ] + Parameter #3 [ <optional> ?string $mode = NULL ] + } + - Return [ Redis|array|false ] + } + + Method [ <internal:redis> public method hpexpireat ] { + + - Parameters [4] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> int $mstime ] + Parameter #2 [ <required> array $fields ] + Parameter #3 [ <optional> ?string $mode = NULL ] + } + - Return [ Redis|array|false ] + } + + Method [ <internal:redis> public method httl ] { + + - Parameters [2] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> array $fields ] + } + - Return [ Redis|array|false ] + } + + Method [ <internal:redis> public method hpttl ] { + + - Parameters [2] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> array $fields ] + } + - Return [ Redis|array|false ] + } + + Method [ <internal:redis> public method hexpiretime ] { + + - Parameters [2] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> array $fields ] + } + - Return [ Redis|array|false ] + } + + Method [ <internal:redis> public method hpexpiretime ] { + + - Parameters [2] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> array $fields ] + } + - Return [ Redis|array|false ] + } + + Method [ <internal:redis> public method hpersist ] { + + - Parameters [2] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> array $fields ] + } + - Return [ Redis|array|false ] + } + Method [ <internal:redis> public method hscan ] { - Parameters [4] { Parameter #0 [ <required> string $key ] - Parameter #1 [ <required> ?int &$iterator ] + Parameter #1 [ <required> string|int|null &$iterator ] Parameter #2 [ <optional> ?string $pattern = null ] Parameter #3 [ <optional> int $count = 0 ] } - Return [ Redis|array|bool ] } + Method [ <internal:redis> public method expiremember ] { + + - Parameters [4] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> string $field ] + Parameter #2 [ <required> int $ttl ] + Parameter #3 [ <optional> ?string $unit = null ] + } + - Return [ Redis|int|false ] + } + + Method [ <internal:redis> public method expirememberat ] { + + - Parameters [3] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> string $field ] + Parameter #2 [ <required> int $timestamp ] + } + - Return [ Redis|int|false ] + } + Method [ <internal:redis> public method incr ] { - Parameters [2] { @@ -1312,7 +1512,7 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Parameters [1] { Parameter #0 [ <required> array $keys ] } - - Return [ Redis|array ] + - Return [ Redis|array|false ] } Method [ <internal:redis> public method migrate ] { @@ -1721,7 +1921,7 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { Parameter #0 [ <required> string $key ] Parameter #1 [ <optional> int $count = 0 ] } - - Return [ Redis|array|string|false ] + - Return [ mixed ] } Method [ <internal:redis> public method sUnion ] { @@ -1753,7 +1953,7 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { Method [ <internal:redis> public method scan ] { - Parameters [4] { - Parameter #0 [ <required> ?int &$iterator ] + Parameter #0 [ <required> string|int|null &$iterator ] Parameter #1 [ <optional> ?string $pattern = null ] Parameter #2 [ <optional> int $count = 0 ] Parameter #3 [ <optional> ?string $type = null ] @@ -1972,7 +2172,7 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Parameters [4] { Parameter #0 [ <required> string $key ] - Parameter #1 [ <required> ?int &$iterator ] + Parameter #1 [ <required> string|int|null &$iterator ] Parameter #2 [ <optional> ?string $pattern = null ] Parameter #3 [ <optional> int $count = 0 ] } @@ -2235,6 +2435,129 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Return [ Redis|array|bool ] } + Method [ <internal:redis> public method vadd ] { + + - Parameters [4] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> array $values ] + Parameter #2 [ <required> mixed $element ] + Parameter #3 [ <optional> ?array $options = null ] + } + - Return [ Redis|int|false ] + } + + Method [ <internal:redis> public method vsim ] { + + - Parameters [3] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> mixed $member ] + Parameter #2 [ <optional> ?array $options = null ] + } + - Return [ Redis|array|false ] + } + + Method [ <internal:redis> public method vcard ] { + + - Parameters [1] { + Parameter #0 [ <required> string $key ] + } + - Return [ Redis|int|false ] + } + + Method [ <internal:redis> public method vdim ] { + + - Parameters [1] { + Parameter #0 [ <required> string $key ] + } + - Return [ Redis|int|false ] + } + + Method [ <internal:redis> public method vinfo ] { + + - Parameters [1] { + Parameter #0 [ <required> string $key ] + } + - Return [ Redis|array|false ] + } + + Method [ <internal:redis> public method vismember ] { + + - Parameters [2] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> mixed $member ] + } + - Return [ Redis|bool ] + } + + Method [ <internal:redis> public method vemb ] { + + - Parameters [3] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> mixed $member ] + Parameter #2 [ <optional> bool $raw = false ] + } + - Return [ Redis|array|false ] + } + + Method [ <internal:redis> public method vrandmember ] { + + - Parameters [2] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <optional> int $count = 0 ] + } + - Return [ Redis|array|string|false ] + } + + Method [ <internal:redis> public method vrange ] { + + - Parameters [4] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> string $min ] + Parameter #2 [ <required> string $max ] + Parameter #3 [ <optional> int $count = -1 ] + } + - Return [ Redis|array|false ] + } + + Method [ <internal:redis> public method vrem ] { + + - Parameters [2] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> mixed $member ] + } + - Return [ Redis|int|false ] + } + + Method [ <internal:redis> public method vsetattr ] { + + - Parameters [3] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> mixed $member ] + Parameter #2 [ <required> array|string $attributes ] + } + - Return [ Redis|int|false ] + } + + Method [ <internal:redis> public method vgetattr ] { + + - Parameters [3] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> mixed $member ] + Parameter #2 [ <optional> bool $decode = true ] + } + - Return [ Redis|array|string|false ] + } + + Method [ <internal:redis> public method vlinks ] { + + - Parameters [3] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> mixed $member ] + Parameter #2 [ <optional> bool $withscores = false ] + } + - Return [ Redis|array|false ] + } + Method [ <internal:redis> public method xtrim ] { - Parameters [5] { @@ -2269,8 +2592,8 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Parameters [3] { Parameter #0 [ <required> string $key ] - Parameter #1 [ <required> string $start ] - Parameter #2 [ <required> string $end ] + Parameter #1 [ <required> string|int $start ] + Parameter #2 [ <required> string|int $end ] } - Return [ Redis|int|false ] } @@ -2531,7 +2854,7 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Parameters [4] { Parameter #0 [ <required> string $key ] - Parameter #1 [ <required> ?int &$iterator ] + Parameter #1 [ <required> string|int|null &$iterator ] Parameter #2 [ <optional> ?string $pattern = null ] Parameter #3 [ <optional> int $count = 0 ] } @@ -2672,7 +2995,7 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Parameters [0] { } - - Return [ ?bool ] + - Return [ array|bool|null ] } Method [ <internal:redis> public method flushall ] { @@ -2701,7 +3024,7 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Parameters [4] { Parameter #0 [ <required> string $key ] - Parameter #1 [ <required> ?int &$iterator ] + Parameter #1 [ <required> string|int|null &$iterator ] Parameter #2 [ <optional> ?string $pattern = null ] Parameter #3 [ <optional> int $count = 0 ] } @@ -2765,7 +3088,7 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { Method [ <internal:redis> public method scan ] { - Parameters [4] { - Parameter #0 [ <required> ?int &$iterator ] + Parameter #0 [ <required> string|int|null &$iterator ] Parameter #1 [ <required> string $node ] Parameter #2 [ <optional> ?string $pattern = null ] Parameter #3 [ <optional> int $count = 0 ] @@ -2794,7 +3117,7 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Parameters [4] { Parameter #0 [ <required> string $key ] - Parameter #1 [ <required> ?int &$iterator ] + Parameter #1 [ <required> string|int|null &$iterator ] Parameter #2 [ <optional> ?string $pattern = null ] Parameter #3 [ <optional> int $count = 0 ] } @@ -2821,7 +3144,7 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Parameters [4] { Parameter #0 [ <required> string $key ] - Parameter #1 [ <required> ?int &$iterator ] + Parameter #1 [ <required> string|int|null &$iterator ] Parameter #2 [ <optional> ?string $pattern = null ] Parameter #3 [ <optional> int $count = 0 ] } @@ -2849,7 +3172,7 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Properties [0] { } - - Methods [222] { + - Methods [255] { Method [ <internal:redis, ctor> public method __construct ] { - Parameters [7] { @@ -2960,6 +3283,17 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Return [ RedisCluster|bool ] } + Method [ <internal:redis> public method waitaof ] { + + - Parameters [4] { + Parameter #0 [ <required> array|string $key_or_address ] + Parameter #1 [ <required> int $numlocal ] + Parameter #2 [ <required> int $numreplicas ] + Parameter #3 [ <required> int $timeout ] + } + - Return [ RedisCluster|array|false ] + } + Method [ <internal:redis> public method bgsave ] { - Parameters [1] { @@ -3129,7 +3463,7 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Parameters [3] { Parameter #0 [ <required> array|string $key_or_address ] Parameter #1 [ <required> string $subcommand ] - Parameter #2 [ <optional> ?string $arg = NULL ] + Parameter #2 [ <optional> ?string $arg = null ] } - Return [ array|string|bool ] } @@ -3223,6 +3557,15 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Return [ RedisCluster|int|false ] } + Method [ <internal:redis> public method delifeq ] { + + - Parameters [2] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> mixed $value ] + } + - Return [ RedisCluster|int|false ] + } + Method [ <internal:redis> public method discard ] { - Parameters [0] { @@ -3317,7 +3660,7 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Parameters [3] { Parameter #0 [ <required> string $key ] Parameter #1 [ <required> int $timeout ] - Parameter #2 [ <optional> ?string $mode = NULL ] + Parameter #2 [ <optional> ?string $mode = null ] } - Return [ RedisCluster|bool ] } @@ -3327,7 +3670,7 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Parameters [3] { Parameter #0 [ <required> string $key ] Parameter #1 [ <required> int $timestamp ] - Parameter #2 [ <optional> ?string $mode = NULL ] + Parameter #2 [ <optional> ?string $mode = null ] } - Return [ RedisCluster|bool ] } @@ -3492,6 +3835,31 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Return [ mixed ] } + Method [ <internal:redis> public method getdel ] { + + - Parameters [1] { + Parameter #0 [ <required> string $key ] + } + - Return [ mixed ] + } + + Method [ <internal:redis> public method getWithMeta ] { + + - Parameters [1] { + Parameter #0 [ <required> string $key ] + } + - Return [ RedisCluster|array|false ] + } + + Method [ <internal:redis> public method getex ] { + + - Parameters [2] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <optional> array $options = [] ] + } + - Return [ RedisCluster|string|false ] + } + Method [ <internal:redis> public method getbit ] { - Parameters [2] { @@ -3538,7 +3906,7 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Parameters [3] { Parameter #0 [ <required> string $key1 ] Parameter #1 [ <required> string $key2 ] - Parameter #2 [ <optional> ?array $options = NULL ] + Parameter #2 [ <optional> ?array $options = null ] } - Return [ RedisCluster|array|string|int|false ] } @@ -3602,6 +3970,15 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Return [ RedisCluster|array|false ] } + Method [ <internal:redis> public method hgetWithMeta ] { + + - Parameters [2] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> string $member ] + } + - Return [ mixed ] + } + Method [ <internal:redis> public method hincrby ] { - Parameters [3] { @@ -3647,6 +4024,35 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Return [ RedisCluster|array|false ] } + Method [ <internal:redis> public method hgetex ] { + + - Parameters [3] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> array $fields ] + Parameter #2 [ <optional> array|string|null $expiry = null ] + } + - Return [ RedisCluster|array|false ] + } + + Method [ <internal:redis> public method hsetex ] { + + - Parameters [3] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> array $fields ] + Parameter #2 [ <optional> ?array $expiry = null ] + } + - Return [ RedisCluster|int|false ] + } + + Method [ <internal:redis> public method hgetdel ] { + + - Parameters [2] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> array $fields ] + } + - Return [ RedisCluster|array|false ] + } + Method [ <internal:redis> public method hmset ] { - Parameters [2] { @@ -3660,13 +4066,34 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Parameters [4] { Parameter #0 [ <required> string $key ] - Parameter #1 [ <required> ?int &$iterator ] + Parameter #1 [ <required> string|int|null &$iterator ] Parameter #2 [ <optional> ?string $pattern = null ] Parameter #3 [ <optional> int $count = 0 ] } - Return [ array|bool ] } + Method [ <internal:redis> public method expiremember ] { + + - Parameters [4] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> string $field ] + Parameter #2 [ <required> int $ttl ] + Parameter #3 [ <optional> ?string $unit = null ] + } + - Return [ Redis|int|false ] + } + + Method [ <internal:redis> public method expirememberat ] { + + - Parameters [3] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> string $field ] + Parameter #2 [ <required> int $timestamp ] + } + - Return [ Redis|int|false ] + } + Method [ <internal:redis> public method hrandfield ] { - Parameters [2] { @@ -3705,6 +4132,95 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Return [ RedisCluster|int|false ] } + Method [ <internal:redis> public method hexpire ] { + + - Parameters [4] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> int $ttl ] + Parameter #2 [ <required> array $fields ] + Parameter #3 [ <optional> ?string $mode = NULL ] + } + - Return [ RedisCluster|array|false ] + } + + Method [ <internal:redis> public method hpexpire ] { + + - Parameters [4] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> int $ttl ] + Parameter #2 [ <required> array $fields ] + Parameter #3 [ <optional> ?string $mode = NULL ] + } + - Return [ RedisCluster|array|false ] + } + + Method [ <internal:redis> public method hexpireat ] { + + - Parameters [4] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> int $time ] + Parameter #2 [ <required> array $fields ] + Parameter #3 [ <optional> ?string $mode = NULL ] + } + - Return [ RedisCluster|array|false ] + } + + Method [ <internal:redis> public method hpexpireat ] { + + - Parameters [4] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> int $mstime ] + Parameter #2 [ <required> array $fields ] + Parameter #3 [ <optional> ?string $mode = NULL ] + } + - Return [ RedisCluster|array|false ] + } + + Method [ <internal:redis> public method httl ] { + + - Parameters [2] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> array $fields ] + } + - Return [ RedisCluster|array|false ] + } + + Method [ <internal:redis> public method hpttl ] { + + - Parameters [2] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> array $fields ] + } + - Return [ RedisCluster|array|false ] + } + + Method [ <internal:redis> public method hexpiretime ] { + + - Parameters [2] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> array $fields ] + } + - Return [ RedisCluster|array|false ] + } + + Method [ <internal:redis> public method hpexpiretime ] { + + - Parameters [2] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> array $fields ] + } + - Return [ RedisCluster|array|false ] + } + + Method [ <internal:redis> public method hpersist ] { + + - Parameters [2] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> array $fields ] + } + - Return [ RedisCluster|array|false ] + } + Method [ <internal:redis> public method hvals ] { - Parameters [1] { @@ -3934,7 +4450,7 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Parameters [3] { Parameter #0 [ <required> string $key ] Parameter #1 [ <required> int $timeout ] - Parameter #2 [ <optional> ?string $mode = NULL ] + Parameter #2 [ <optional> ?string $mode = null ] } - Return [ RedisCluster|bool ] } @@ -3944,7 +4460,7 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Parameters [3] { Parameter #0 [ <required> string $key ] Parameter #1 [ <required> int $timestamp ] - Parameter #2 [ <optional> ?string $mode = NULL ] + Parameter #2 [ <optional> ?string $mode = null ] } - Return [ RedisCluster|bool ] } @@ -3979,7 +4495,7 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Parameters [2] { Parameter #0 [ <required> array|string $key_or_address ] - Parameter #1 [ <optional> ?string $message = NULL ] + Parameter #1 [ <optional> ?string $message = null ] } - Return [ mixed ] } @@ -4017,7 +4533,7 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { Parameter #0 [ <required> string $channel ] Parameter #1 [ <required> string $message ] } - - Return [ RedisCluster|bool ] + - Return [ RedisCluster|int|bool ] } Method [ <internal:redis> public method pubsub ] { @@ -4080,7 +4596,7 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { Parameter #0 [ <required> string $key ] Parameter #1 [ <required> int $timeout ] Parameter #2 [ <required> string $value ] - Parameter #3 [ <optional> ?array $options = NULL ] + Parameter #3 [ <optional> ?array $options = null ] } - Return [ RedisCluster|bool ] } @@ -4159,7 +4675,7 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { Method [ <internal:redis> public method scan ] { - Parameters [4] { - Parameter #0 [ <required> ?int &$iterator ] + Parameter #0 [ <required> string|int|null &$iterator ] Parameter #1 [ <required> array|string $key_or_address ] Parameter #2 [ <optional> ?string $pattern = null ] Parameter #3 [ <optional> int $count = 0 ] @@ -4338,7 +4854,7 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Parameters [2] { Parameter #0 [ <required> string $key ] - Parameter #1 [ <optional> ?array $options = NULL ] + Parameter #1 [ <optional> ?array $options = null ] } - Return [ RedisCluster|array|string|int|bool ] } @@ -4347,7 +4863,7 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Parameters [2] { Parameter #0 [ <required> string $key ] - Parameter #1 [ <optional> ?array $options = NULL ] + Parameter #1 [ <optional> ?array $options = null ] } - Return [ RedisCluster|array|string|int|bool ] } @@ -4384,7 +4900,7 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Parameters [4] { Parameter #0 [ <required> string $key ] - Parameter #1 [ <required> ?int &$iterator ] + Parameter #1 [ <required> string|int|null &$iterator ] Parameter #2 [ <optional> ?string $pattern = null ] Parameter #3 [ <optional> int $count = 0 ] } @@ -4484,6 +5000,129 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Return [ RedisCluster|bool ] } + Method [ <internal:redis> public method vadd ] { + + - Parameters [4] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> array $values ] + Parameter #2 [ <required> mixed $element ] + Parameter #3 [ <optional> ?array $options = null ] + } + - Return [ RedisCluster|int|false ] + } + + Method [ <internal:redis> public method vsim ] { + + - Parameters [3] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> mixed $member ] + Parameter #2 [ <optional> ?array $options = null ] + } + - Return [ RedisCluster|array|false ] + } + + Method [ <internal:redis> public method vcard ] { + + - Parameters [1] { + Parameter #0 [ <required> string $key ] + } + - Return [ RedisCluster|int|false ] + } + + Method [ <internal:redis> public method vdim ] { + + - Parameters [1] { + Parameter #0 [ <required> string $key ] + } + - Return [ RedisCluster|int|false ] + } + + Method [ <internal:redis> public method vinfo ] { + + - Parameters [1] { + Parameter #0 [ <required> string $key ] + } + - Return [ RedisCluster|array|false ] + } + + Method [ <internal:redis> public method vismember ] { + + - Parameters [2] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> mixed $member ] + } + - Return [ RedisCluster|bool ] + } + + Method [ <internal:redis> public method vemb ] { + + - Parameters [3] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> mixed $member ] + Parameter #2 [ <optional> bool $raw = false ] + } + - Return [ RedisCluster|array|false ] + } + + Method [ <internal:redis> public method vrandmember ] { + + - Parameters [2] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <optional> int $count = 0 ] + } + - Return [ RedisCluster|array|string|false ] + } + + Method [ <internal:redis> public method vrange ] { + + - Parameters [4] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> string $min ] + Parameter #2 [ <required> string $max ] + Parameter #3 [ <optional> int $count = -1 ] + } + - Return [ RedisCluster|array|false ] + } + + Method [ <internal:redis> public method vrem ] { + + - Parameters [2] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> mixed $member ] + } + - Return [ RedisCluster|int|false ] + } + + Method [ <internal:redis> public method vlinks ] { + + - Parameters [3] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> mixed $member ] + Parameter #2 [ <optional> bool $withscores = false ] + } + - Return [ RedisCluster|array|false ] + } + + Method [ <internal:redis> public method vgetattr ] { + + - Parameters [3] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> mixed $member ] + Parameter #2 [ <optional> bool $decode = true ] + } + - Return [ Redis|array|string|false ] + } + + Method [ <internal:redis> public method vsetattr ] { + + - Parameters [3] { + Parameter #0 [ <required> string $key ] + Parameter #1 [ <required> mixed $member ] + Parameter #2 [ <required> array|string $attributes ] + } + - Return [ Redis|int|false ] + } + Method [ <internal:redis> public method xack ] { - Parameters [3] { @@ -4879,7 +5518,7 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Parameters [4] { Parameter #0 [ <required> string $key ] - Parameter #1 [ <required> ?int &$iterator ] + Parameter #1 [ <required> string|int|null &$iterator ] Parameter #2 [ <optional> ?string $pattern = null ] Parameter #3 [ <optional> int $count = 0 ] } @@ -4910,8 +5549,8 @@ Extension [ <persistent> extension #122 redis version 6.0.2 ] { - Parameters [4] { Parameter #0 [ <required> string $dst ] Parameter #1 [ <required> array $keys ] - Parameter #2 [ <optional> ?array $weights = NULL ] - Parameter #3 [ <optional> ?string $aggregate = NULL ] + Parameter #2 [ <optional> ?array $weights = null ] + Parameter #3 [ <optional> ?string $aggregate = null ] } - Return [ RedisCluster|int|false ] } diff --git a/php-pecl-redis6.spec b/php-pecl-redis6.spec index 04d0456..1fb2cd5 100644 --- a/php-pecl-redis6.spec +++ b/php-pecl-redis6.spec @@ -1,8 +1,8 @@ # remirepo spec file for php-pecl-redis6 # -# Copyright (c) 2012-2024 Remi Collet -# License: CC-BY-SA-4.0 -# http://creativecommons.org/licenses/by-sa/4.0/ +# SPDX-FileCopyrightText: Copyright 2012-2025 Remi Collet +# SPDX-License-Identifier: CECILL-2.1 +# http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt # # Please, preserve the changelog entries # @@ -14,40 +14,37 @@ %bcond_without tests %global _root_bindir %{_bindir} %endif + %bcond_without igbinary %bcond_without msgpack -%if 0%{?fedora} >= 41 || 0%{?rhel} >= 10 -%bcond_without valkey -%else -# Use valkey instead of redis for tests -%bcond_with valkey -%endif -# Use keydb instead of redis for tests +# use redis instead of valkey for tests +%bcond_with redis +# Use keydb instead of valkey for tests %bcond_with keydb +%global pie_vend phpredis +%global pie_proj phpredis %global pecl_name redis %global with_zts 0%{!?_without_zts:%{?__ztsphp:1}} # after 20-json, 40-igbinary and 40-msgpack %global ini_name 50-%{pecl_name}.ini -%global upstream_version 6.0.2 -#global upstream_prever RC2 +%global upstream_version 6.3.0 +%global upstream_prever RC1 %global sources %{pecl_name}-%{upstream_version}%{?upstream_prever} %global _configure ../%{sources}/configure -Summary: Extension for communicating with the Redis key-value store +Summary: PHP extension for interfacing with key-value stores Name: %{?scl_prefix}php-pecl-redis6 Version: %{upstream_version}%{?upstream_prever:~%{upstream_prever}} -Release: 2%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}} +Release: 1%{?dist}%{!?scl:%{!?nophptag:%(%{__php} -r 'echo ".".PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')}} License: PHP-3.01 URL: https://pecl.php.net/package/redis Source0: https://pecl.php.net/get/%{sources}.tgz -Patch0: %{pecl_name}-upstream.patch - BuildRequires: make BuildRequires: %{?dtsprefix}gcc -BuildRequires: %{?scl_prefix}php-devel >= 7.2 +BuildRequires: %{?scl_prefix}php-devel >= 7.4 BuildRequires: %{?scl_prefix}php-pear BuildRequires: %{?scl_prefix}php-json %if %{with igbinary} @@ -61,13 +58,13 @@ BuildRequires: pkgconfig(libzstd) >= 1.3.0 BuildRequires: pkgconfig(liblz4) # to run Test suite %if %{with tests} -%if %{with valkey} -BuildRequires: valkey +%if %{with redis} +BuildRequires: redis %else %if %{with keydb} BuildRequires: keydb %else -BuildRequires: redis +BuildRequires: valkey %endif %endif %endif @@ -82,11 +79,16 @@ Requires: %{?scl_prefix}php-igbinary%{?_isa} Requires: %{?scl_prefix}php-msgpack%{?_isa} %endif -Obsoletes: %{?scl_prefix}php-%{pecl_name} < 3 -Provides: %{?scl_prefix}php-%{pecl_name} = %{version} -Provides: %{?scl_prefix}php-%{pecl_name}%{?_isa} = %{version} -Provides: %{?scl_prefix}php-pecl(%{pecl_name}) = %{version} -Provides: %{?scl_prefix}php-pecl(%{pecl_name})%{?_isa} = %{version} +# Extension +Obsoletes: %{?scl_prefix}php-%{pecl_name} < 3 +Provides: %{?scl_prefix}php-%{pecl_name} = %{version} +Provides: %{?scl_prefix}php-%{pecl_name}%{?_isa} = %{version} +# PECL +Provides: %{?scl_prefix}php-pecl(%{pecl_name}) = %{version} +Provides: %{?scl_prefix}php-pecl(%{pecl_name})%{?_isa} = %{version} +# PIE +Provides: %{?scl_prefix}php-pie(%{pie_vend}/%{pie_proj}) = %{version} +Provides: %{?scl_prefix}php-%{pie_vend}-%{pie_proj} = %{version} %if 0%{?fedora} >= 40 || 0%{?rhel} >= 10 || "%{php_version}" > "8.3" Obsoletes: %{?scl_prefix}php-pecl-%{pecl_name} < 6 @@ -105,14 +107,27 @@ Conflicts: %{?scl_prefix}php-pecl-%{pecl_name}4 < 6 Conflicts: %{?scl_prefix}php-pecl-%{pecl_name}5 < 6 %endif +%if 0%{?rhel} >= 10 && "%{?vendeur}" == "remi" && 0%{!?scl:1} +%if "%{php_version}" >= "8.5" +Obsoletes: php8.4-pecl-redis6 < %{version}-%{release} +Obsoletes: php8.5-pecl-redis6 < %{version}-%{release} +Provides: php8.5-pecl-redis6 = %{version}-%{release} +Provides: php8.5-pecl-redis6%{?_isa} = %{version}-%{release} +%elif "%{php_version}" >= "8.4" +Obsoletes: php8.4-pecl-redis6 < %{version}-%{release} +Provides: php8.4-pecl-redis6 = %{version}-%{release} +Provides: php8.4-pecl-redis6%{?_isa} = %{version}-%{release} +%endif +%endif + %description -The phpredis extension provides an API for communicating -with the Redis key-value store. +This extension provides an API for communicating with RESP-based key-value +stores, such as Redis, Valkey, and KeyDB. -This Redis client implements most of the latest Redis API. -As method only only works when also implemented on the server side, -some doesn't work with an old redis server version. +This client implements most of the latest API. +As method only works when also implemented on the server side, +some doesn't work with an old server version. Package built for PHP %(%{__php} -r 'echo PHP_MAJOR_VERSION.".".PHP_MINOR_VERSION;')%{?scl: as Software Collection (%{scl} by %{?scl_vendor}%{!?scl_vendor:rh})}. @@ -127,8 +142,6 @@ sed -e 's/role="test"/role="src"/' \ -i package.xml cd %{sources} -%patch -P0 -p1 - # Use system library rm -r liblzf @@ -192,7 +205,10 @@ extension = %{pecl_name}.so ;redis.session.lock_expire = 0 ;redis.session.lock_retries = 100 ;redis.session.lock_wait_time = 20000 +;redis.session.lock_failure_readonly = 0 ;redis.session.early_refresh = 0 +;redis.session.compression = none +;redis.session.compression_level = 3 EOF @@ -220,15 +236,16 @@ peclconf() { cd %{sources} %{__phpize} +sed -e 's/INSTALL_ROOT/DESTDIR/' -i build/Makefile.global cd ../NTS peclconf %{__phpconfig} -make %{?_smp_mflags} +%make_build %if %{with_zts} cd ../ZTS peclconf %{__ztsphpconfig} -make %{?_smp_mflags} +%make_build %endif @@ -236,12 +253,12 @@ make %{?_smp_mflags} %{?dtsenable} # Install the NTS stuff -make -C NTS install INSTALL_ROOT=%{buildroot} +%make_install -C NTS install -D -m 644 %{ini_name} %{buildroot}%{php_inidir}/%{ini_name} %if %{with_zts} # Install the ZTS stuff -make -C ZTS install INSTALL_ROOT=%{buildroot} +%make_install -C ZTS install -D -m 644 %{ini_name} %{buildroot}%{php_ztsinidir}/%{ini_name} %endif @@ -275,18 +292,16 @@ done %if %{with tests} cd %{sources}/tests -: Launch redis server -%if %{with valkey} +: Launch the server SRV=%{_root_bindir}/valkey-server CLI=%{_root_bindir}/valkey-cli -%else -%if %{with keydb} -SRV=%{_root_bindir}/keydb-server -CLI=%{_root_bindir}/keydb-cli -%else +%if %{with redis} SRV=%{_root_bindir}/redis-server CLI=%{_root_bindir}/redis-cli %endif +%if %{with keydb} +SRV=%{_root_bindir}/keydb-server +CLI=%{_root_bindir}/keydb-cli %endif mkdir -p data @@ -338,6 +353,50 @@ exit $ret %changelog +* Wed Oct 15 2025 Remi Collet <remi@remirepo.net> - 6.3.0~RC1-1 +- update to 6.3.0RC1 + +* Fri Oct 3 2025 Remi Collet <remi@remirepo.net> - 6.3.0~RC1-0 +- test build for upcoming 6.3.0RC1 + +* Thu Sep 25 2025 Remi Collet <remi@remirepo.net> - 6.2.0-4 +- rebuild for PHP 8.5.0RC1 + +* Wed Jul 30 2025 Remi Collet <remi@remirepo.net> - 6.2.0-3 +- add patch for PHP 8.5.0alpha3 from + https://github.com/phpredis/phpredis/pull/2677 + +* Tue Jun 24 2025 Remi Collet <remi@remirepo.net> - 6.2.0-2 +- add upstream patch for redis 8 +- use valkey by default for tests + +* Tue Mar 25 2025 Remi Collet <remi@remirepo.net> - 6.2.0-1 +- update to 6.2.0 + +* Fri Mar 21 2025 Remi Collet <remi@remirepo.net> - 6.2.0-0.1 +- new test build for upcoming 6.2.0 + +* Wed Mar 19 2025 Remi Collet <remi@remirepo.net> - 6.2.0-0 +- test build for upcoming 6.2.0 + +* Tue Mar 18 2025 Remi Collet <remi@remirepo.net> - 6.1.1-0 +- test build for upcoming 6.1.1 +- re-license spec file to CECILL-2.1 + +* Sat Oct 5 2024 Remi Collet <remi@remirepo.net> - 6.1.0-1 +- update to 6.1.0 + +* Tue Sep 24 2024 Remi Collet <remi@remirepo.net> - 6.1.0~RC2-1 +- update to 6.1.0RC2 + +* Mon Sep 23 2024 Remi Collet <remi@remirepo.net> - 6.1.0~RC2-0 +- test build for upcoming 6.1.0RC2 + +* Mon Aug 5 2024 Remi Collet <remi@remirepo.net> - 6.1.0~RC1-1 +- update to 6.1.0RC1 +- open https://github.com/phpredis/phpredis/pull/2532 missing file +- drop support for PHP < 7.4 + * Thu Jul 11 2024 Remi Collet <remi@remirepo.net> - 6.0.2-2 - add upstream patch for PHP 8.4 - allow to build with valkey diff --git a/redis-upstream.patch b/redis-upstream.patch deleted file mode 100644 index 03bd34f..0000000 --- a/redis-upstream.patch +++ /dev/null @@ -1,116 +0,0 @@ -From a51215ce2b22bcd1f506780c35b6833471e0b8cb Mon Sep 17 00:00:00 2001 -From: michael-grunder <michael.grunder@gmail.com> -Date: Mon, 18 Mar 2024 14:42:35 -0700 -Subject: [PATCH] Update random includes. - -PHP 8.4 has some breaking changes with respect to where PHP's random methods and -helpers are. This commit fixes those issues while staying backward compatible. - -Fixes #2463 ---- - backoff.c | 12 ++++++------ - library.c | 7 ++++++- - redis.c | 6 +++++- - 3 files changed, 17 insertions(+), 8 deletions(-) - -diff --git a/backoff.c b/backoff.c -index d0961fcfaf..1be04a8fe8 100644 ---- a/backoff.c -+++ b/backoff.c -@@ -1,14 +1,14 @@ - #include "common.h" - -+#if PHP_VERSION_ID < 80400 - #include <ext/standard/php_rand.h> -- --#if PHP_VERSION_ID >= 70100 --#include <ext/standard/php_mt_rand.h> - #else -+#include <ext/random/php_random.h> -+#endif -+ -+#if PHP_VERSION_ID < 70100 - static zend_long php_mt_rand_range(zend_long min, zend_long max) { -- zend_long number = php_rand(); -- RAND_RANGE(number, min, max, PHP_RAND_MAX); -- return number; -+ return min + php_rand() % (max - min + 1) - } - #endif - -diff --git a/library.c b/library.c -index 3d65c8529d..f81556a9ed 100644 ---- a/library.c -+++ b/library.c -@@ -56,9 +56,14 @@ - #include <ext/json/php_json.h> - #endif - --#include <ext/standard/php_rand.h> - #include <ext/hash/php_hash.h> - -+#if PHP_VERSION_ID < 80400 -+#include <ext/standard/php_rand.h> -+#else -+#include <ext/random/php_random.h> -+#endif -+ - #define UNSERIALIZE_NONE 0 - #define UNSERIALIZE_KEYS 1 - #define UNSERIALIZE_VALS 2 -diff --git a/redis.c b/redis.c -index ec6f65d2ed..2330bf7edf 100644 ---- a/redis.c -+++ b/redis.c -@@ -27,12 +27,16 @@ - #include "redis_cluster.h" - #include "redis_commands.h" - #include "redis_sentinel.h" --#include <standard/php_random.h> - #include <ext/spl/spl_exceptions.h> - #include <zend_exceptions.h> - #include <ext/standard/info.h> - #include <ext/hash/php_hash.h> - -+#if PHP_VERSION_ID < 80400 -+#include <ext/standard/php_random.h> -+#else -+#include <ext/random/php_random.h> -+#endif - - #ifdef PHP_SESSION - #include <ext/session/php_session.h> -From c139de3abac1dd33b97ef0de5af41b6e3a78f7ab Mon Sep 17 00:00:00 2001 -From: michael-grunder <michael.grunder@gmail.com> -Date: Sat, 1 Jun 2024 13:09:30 -0700 -Subject: [PATCH] We don't need to use a ranom value for our ECHO liveness - challenge. - -A microsecond resolution timestamp combined with a monotonically -incremented counter should be sufficient. - -This also fixes PHP 8.4 compilation as PHP 8.4 doesn't seem to have -`php_rand()`. ---- - library.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/library.c b/library.c -index ce0cbda26..42a132c4c 100644 ---- a/library.c -+++ b/library.c -@@ -2886,11 +2886,13 @@ redis_sock_create(char *host, int host_len, int port, - } - - static int redis_uniqid(char *buf, size_t buflen) { -+ static unsigned long counter = 0; - struct timeval tv; -+ - gettimeofday(&tv, NULL); - - return snprintf(buf, buflen, "phpredis:%08lx%05lx:%08lx", -- (long)tv.tv_sec, (long)tv.tv_usec, (long)php_rand()); -+ (long)tv.tv_sec, (long)tv.tv_usec, counter++); - } - - static int redis_stream_liveness_check(php_stream *stream) { |