Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit08a9d5d

Browse files
yatsukhnenkomichael-grunder
authored andcommitted
Issue#2055
1 parenta64a0c3 commit08a9d5d

File tree

4 files changed

+91
-2
lines changed

4 files changed

+91
-2
lines changed

‎redis_array.c‎

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1113,6 +1113,56 @@ PHP_METHOD(RedisArray, unlink) {
11131113
ra_generic_del(INTERNAL_FUNCTION_PARAM_PASSTHRU,"UNLINK",sizeof("UNLINK")-1);
11141114
}
11151115

1116+
staticvoid
1117+
ra_generic_scan_cmd(INTERNAL_FUNCTION_PARAMETERS,constchar*kw,intkw_len)
1118+
{
1119+
RedisArray*ra;
1120+
zend_string*key,*pattern=NULL;
1121+
zval*object,*redis_inst,*z_iter,z_fun,z_args[4];
1122+
zend_longcount=0;
1123+
1124+
if (zend_parse_method_parameters(ZEND_NUM_ARGS(),getThis(),"OSz/|S!l",
1125+
&object,redis_array_ce,&key,&z_iter,&pattern,&count)==FAILURE) {
1126+
RETURN_FALSE;
1127+
}
1128+
1129+
if ((ra=redis_array_get(object))==NULL) {
1130+
RETURN_FALSE;
1131+
}
1132+
1133+
if ((redis_inst=ra_find_node(ra,ZSTR_VAL(key),ZSTR_LEN(key),NULL))==NULL) {
1134+
php_error_docref(NULL,E_ERROR,"Could not find any redis servers for this key.");
1135+
RETURN_FALSE;
1136+
}
1137+
1138+
ZVAL_STR(&z_args[0],key);
1139+
ZVAL_NEW_REF(&z_args[1],z_iter);
1140+
if (pattern)ZVAL_STR(&z_args[2],pattern);
1141+
ZVAL_LONG(&z_args[3],count);
1142+
1143+
ZVAL_STRINGL(&z_fun,kw,kw_len);
1144+
call_user_function(&redis_ce->function_table,redis_inst,&z_fun,return_value,ZEND_NUM_ARGS(),z_args);
1145+
zval_dtor(&z_fun);
1146+
1147+
ZVAL_ZVAL(z_iter,&z_args[1],0,1);
1148+
}
1149+
1150+
PHP_METHOD(RedisArray,hscan)
1151+
{
1152+
ra_generic_scan_cmd(INTERNAL_FUNCTION_PARAM_PASSTHRU,"HSCAN",sizeof("HSCAN")-1);
1153+
}
1154+
1155+
PHP_METHOD(RedisArray,sscan)
1156+
{
1157+
ra_generic_scan_cmd(INTERNAL_FUNCTION_PARAM_PASSTHRU,"SSCAN",sizeof("SSCAN")-1);
1158+
}
1159+
1160+
PHP_METHOD(RedisArray,zscan)
1161+
{
1162+
ra_generic_scan_cmd(INTERNAL_FUNCTION_PARAM_PASSTHRU,"ZSCAN",sizeof("ZSCAN")-1);
1163+
}
1164+
1165+
11161166
PHP_METHOD(RedisArray,multi)
11171167
{
11181168
zval*object;

‎redis_array.stub.php‎

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ public function flushdb(): bool|array;
3939

4040
publicfunctiongetOption(int$opt):bool|array;
4141

42+
publicfunctionhscan(string$key,int &$iterator, ?string$pattern =null,int$count =0):bool|array;
43+
4244
publicfunctioninfo():bool|array;
4345

4446
publicfunctionkeys(string$pattern):bool|array;
@@ -57,8 +59,11 @@ public function select(int $index): bool|array;
5759

5860
publicfunctionsetOption(int$opt,string$value):bool|array;
5961

62+
publicfunctionsscan(string$key,int &$iterator, ?string$pattern =null,int$count =0):bool|array;
63+
6064
publicfunctionunlink(string|array$key,string ...$otherkeys):bool|int;
6165

6266
publicfunctionunwatch():bool|null;
6367

68+
publicfunctionzscan(string$key,int &$iterator, ?string$pattern =null,int$count =0):bool|array;
6469
}

‎redis_array_arginfo.h‎

Lines changed: 18 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:e7f3cbb6cba7b52d3cc2d8b2f311dcb37c93ea5b */
2+
* Stub hash:16a0857d62817f14eef16a00e80e587f318b9052 */
33

44
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_RedisArray___call,0,2,IS_MIXED,0)
55
ZEND_ARG_TYPE_INFO(0,function_name,IS_STRING,0)
@@ -54,6 +54,13 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_class_RedisArray_getOption, 0, 1
5454
ZEND_ARG_TYPE_INFO(0,opt,IS_LONG,0)
5555
ZEND_END_ARG_INFO()
5656

57+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_class_RedisArray_hscan,0,2,MAY_BE_BOOL|MAY_BE_ARRAY)
58+
ZEND_ARG_TYPE_INFO(0,key,IS_STRING,0)
59+
ZEND_ARG_TYPE_INFO(1,iterator,IS_LONG,0)
60+
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0,pattern,IS_STRING,1,"null")
61+
ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0,count,IS_LONG,0,"0")
62+
ZEND_END_ARG_INFO()
63+
5764
#definearginfo_class_RedisArray_info arginfo_class_RedisArray__continuum
5865

5966
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_class_RedisArray_keys,0,1,MAY_BE_BOOL|MAY_BE_ARRAY)
@@ -86,10 +93,14 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_class_RedisArray_setOption, 0, 2
8693
ZEND_ARG_TYPE_INFO(0,value,IS_STRING,0)
8794
ZEND_END_ARG_INFO()
8895

96+
#definearginfo_class_RedisArray_sscan arginfo_class_RedisArray_hscan
97+
8998
#definearginfo_class_RedisArray_unlink arginfo_class_RedisArray_del
9099

91100
#definearginfo_class_RedisArray_unwatch arginfo_class_RedisArray_discard
92101

102+
#definearginfo_class_RedisArray_zscan arginfo_class_RedisArray_hscan
103+
93104

94105
ZEND_METHOD(RedisArray,__call);
95106
ZEND_METHOD(RedisArray,__construct);
@@ -107,6 +118,7 @@ ZEND_METHOD(RedisArray, exec);
107118
ZEND_METHOD(RedisArray,flushall);
108119
ZEND_METHOD(RedisArray,flushdb);
109120
ZEND_METHOD(RedisArray,getOption);
121+
ZEND_METHOD(RedisArray,hscan);
110122
ZEND_METHOD(RedisArray,info);
111123
ZEND_METHOD(RedisArray,keys);
112124
ZEND_METHOD(RedisArray,mget);
@@ -116,8 +128,10 @@ ZEND_METHOD(RedisArray, ping);
116128
ZEND_METHOD(RedisArray,save);
117129
ZEND_METHOD(RedisArray,select);
118130
ZEND_METHOD(RedisArray,setOption);
131+
ZEND_METHOD(RedisArray,sscan);
119132
ZEND_METHOD(RedisArray,unlink);
120133
ZEND_METHOD(RedisArray,unwatch);
134+
ZEND_METHOD(RedisArray,zscan);
121135

122136

123137
staticconstzend_function_entryclass_RedisArray_methods[]= {
@@ -137,6 +151,7 @@ static const zend_function_entry class_RedisArray_methods[] = {
137151
ZEND_ME(RedisArray,flushall,arginfo_class_RedisArray_flushall,ZEND_ACC_PUBLIC)
138152
ZEND_ME(RedisArray,flushdb,arginfo_class_RedisArray_flushdb,ZEND_ACC_PUBLIC)
139153
ZEND_ME(RedisArray,getOption,arginfo_class_RedisArray_getOption,ZEND_ACC_PUBLIC)
154+
ZEND_ME(RedisArray,hscan,arginfo_class_RedisArray_hscan,ZEND_ACC_PUBLIC)
140155
ZEND_ME(RedisArray,info,arginfo_class_RedisArray_info,ZEND_ACC_PUBLIC)
141156
ZEND_ME(RedisArray,keys,arginfo_class_RedisArray_keys,ZEND_ACC_PUBLIC)
142157
ZEND_ME(RedisArray,mget,arginfo_class_RedisArray_mget,ZEND_ACC_PUBLIC)
@@ -146,7 +161,9 @@ static const zend_function_entry class_RedisArray_methods[] = {
146161
ZEND_ME(RedisArray,save,arginfo_class_RedisArray_save,ZEND_ACC_PUBLIC)
147162
ZEND_ME(RedisArray,select,arginfo_class_RedisArray_select,ZEND_ACC_PUBLIC)
148163
ZEND_ME(RedisArray,setOption,arginfo_class_RedisArray_setOption,ZEND_ACC_PUBLIC)
164+
ZEND_ME(RedisArray,sscan,arginfo_class_RedisArray_sscan,ZEND_ACC_PUBLIC)
149165
ZEND_ME(RedisArray,unlink,arginfo_class_RedisArray_unlink,ZEND_ACC_PUBLIC)
150166
ZEND_ME(RedisArray,unwatch,arginfo_class_RedisArray_unwatch,ZEND_ACC_PUBLIC)
167+
ZEND_ME(RedisArray,zscan,arginfo_class_RedisArray_zscan,ZEND_ACC_PUBLIC)
151168
ZEND_FE_END
152169
};

‎redis_array_legacy_arginfo.h‎

Lines changed: 18 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:e7f3cbb6cba7b52d3cc2d8b2f311dcb37c93ea5b */
2+
* Stub hash:16a0857d62817f14eef16a00e80e587f318b9052 */
33

44
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisArray___call,0,0,2)
55
ZEND_ARG_INFO(0,function_name)
@@ -51,6 +51,13 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisArray_getOption, 0, 0, 1)
5151
ZEND_ARG_INFO(0,opt)
5252
ZEND_END_ARG_INFO()
5353

54+
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisArray_hscan,0,0,2)
55+
ZEND_ARG_INFO(0,key)
56+
ZEND_ARG_INFO(1,iterator)
57+
ZEND_ARG_INFO(0,pattern)
58+
ZEND_ARG_INFO(0,count)
59+
ZEND_END_ARG_INFO()
60+
5461
#definearginfo_class_RedisArray_info arginfo_class_RedisArray__continuum
5562

5663
ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisArray_keys,0,0,1)
@@ -83,10 +90,14 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_RedisArray_setOption, 0, 0, 2)
8390
ZEND_ARG_INFO(0,value)
8491
ZEND_END_ARG_INFO()
8592

93+
#definearginfo_class_RedisArray_sscan arginfo_class_RedisArray_hscan
94+
8695
#definearginfo_class_RedisArray_unlink arginfo_class_RedisArray_del
8796

8897
#definearginfo_class_RedisArray_unwatch arginfo_class_RedisArray__continuum
8998

99+
#definearginfo_class_RedisArray_zscan arginfo_class_RedisArray_hscan
100+
90101

91102
ZEND_METHOD(RedisArray,__call);
92103
ZEND_METHOD(RedisArray,__construct);
@@ -104,6 +115,7 @@ ZEND_METHOD(RedisArray, exec);
104115
ZEND_METHOD(RedisArray,flushall);
105116
ZEND_METHOD(RedisArray,flushdb);
106117
ZEND_METHOD(RedisArray,getOption);
118+
ZEND_METHOD(RedisArray,hscan);
107119
ZEND_METHOD(RedisArray,info);
108120
ZEND_METHOD(RedisArray,keys);
109121
ZEND_METHOD(RedisArray,mget);
@@ -113,8 +125,10 @@ ZEND_METHOD(RedisArray, ping);
113125
ZEND_METHOD(RedisArray,save);
114126
ZEND_METHOD(RedisArray,select);
115127
ZEND_METHOD(RedisArray,setOption);
128+
ZEND_METHOD(RedisArray,sscan);
116129
ZEND_METHOD(RedisArray,unlink);
117130
ZEND_METHOD(RedisArray,unwatch);
131+
ZEND_METHOD(RedisArray,zscan);
118132

119133

120134
staticconstzend_function_entryclass_RedisArray_methods[]= {
@@ -134,6 +148,7 @@ static const zend_function_entry class_RedisArray_methods[] = {
134148
ZEND_ME(RedisArray,flushall,arginfo_class_RedisArray_flushall,ZEND_ACC_PUBLIC)
135149
ZEND_ME(RedisArray,flushdb,arginfo_class_RedisArray_flushdb,ZEND_ACC_PUBLIC)
136150
ZEND_ME(RedisArray,getOption,arginfo_class_RedisArray_getOption,ZEND_ACC_PUBLIC)
151+
ZEND_ME(RedisArray,hscan,arginfo_class_RedisArray_hscan,ZEND_ACC_PUBLIC)
137152
ZEND_ME(RedisArray,info,arginfo_class_RedisArray_info,ZEND_ACC_PUBLIC)
138153
ZEND_ME(RedisArray,keys,arginfo_class_RedisArray_keys,ZEND_ACC_PUBLIC)
139154
ZEND_ME(RedisArray,mget,arginfo_class_RedisArray_mget,ZEND_ACC_PUBLIC)
@@ -143,7 +158,9 @@ static const zend_function_entry class_RedisArray_methods[] = {
143158
ZEND_ME(RedisArray,save,arginfo_class_RedisArray_save,ZEND_ACC_PUBLIC)
144159
ZEND_ME(RedisArray,select,arginfo_class_RedisArray_select,ZEND_ACC_PUBLIC)
145160
ZEND_ME(RedisArray,setOption,arginfo_class_RedisArray_setOption,ZEND_ACC_PUBLIC)
161+
ZEND_ME(RedisArray,sscan,arginfo_class_RedisArray_sscan,ZEND_ACC_PUBLIC)
146162
ZEND_ME(RedisArray,unlink,arginfo_class_RedisArray_unlink,ZEND_ACC_PUBLIC)
147163
ZEND_ME(RedisArray,unwatch,arginfo_class_RedisArray_unwatch,ZEND_ACC_PUBLIC)
164+
ZEND_ME(RedisArray,zscan,arginfo_class_RedisArray_zscan,ZEND_ACC_PUBLIC)
148165
ZEND_FE_END
149166
};

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp