Added
Link Here
|
1 |
index 1dfaa0f..fd8f024 100755 |
2 |
--- a/php_redis.h |
3 |
+++ php_redis.h |
4 |
@@ -29,6 +29,7 @@ PHP_METHOD(Redis, connect); |
5 |
PHP_METHOD(Redis, pconnect); |
6 |
PHP_METHOD(Redis, close); |
7 |
PHP_METHOD(Redis, ping); |
8 |
+PHP_METHOD(Redis, echo); |
9 |
PHP_METHOD(Redis, get); |
10 |
PHP_METHOD(Redis, set); |
11 |
PHP_METHOD(Redis, setex); |
12 |
diff --git a/redis.c b/redis.c |
13 |
index 9ca3a14..3e15d73 100755 |
14 |
--- a/redis.c |
15 |
+++ redis.c |
16 |
@@ -76,6 +76,7 @@ static zend_function_entry redis_functions[] = { |
17 |
PHP_ME(Redis, pconnect, NULL, ZEND_ACC_PUBLIC) |
18 |
PHP_ME(Redis, close, NULL, ZEND_ACC_PUBLIC) |
19 |
PHP_ME(Redis, ping, NULL, ZEND_ACC_PUBLIC) |
20 |
+ PHP_ME(Redis, echo, NULL, ZEND_ACC_PUBLIC) |
21 |
PHP_ME(Redis, get, NULL, ZEND_ACC_PUBLIC) |
22 |
PHP_ME(Redis, set, NULL, ZEND_ACC_PUBLIC) |
23 |
PHP_ME(Redis, setex, NULL, ZEND_ACC_PUBLIC) |
24 |
@@ -324,7 +325,7 @@ static void redis_destructor_redis_sock(zend_rsrc_list_entry * rsrc TSRMLS_DC) |
25 |
/** |
26 |
* redis_sock_get |
27 |
*/ |
28 |
-PHPAPI int redis_sock_get(zval *id, RedisSock **redis_sock TSRMLS_DC) |
29 |
+PHPAPI int redis_sock_get(zval *id, RedisSock **redis_sock TSRMLS_DC, int no_throw) |
30 |
{ |
31 |
|
32 |
zval **socket; |
33 |
@@ -332,15 +333,21 @@ PHPAPI int redis_sock_get(zval *id, RedisSock **redis_sock TSRMLS_DC) |
34 |
|
35 |
if (Z_TYPE_P(id) != IS_OBJECT || zend_hash_find(Z_OBJPROP_P(id), "socket", |
36 |
sizeof("socket"), (void **) &socket) == FAILURE) { |
37 |
- zend_throw_exception(redis_exception_ce, "Redis server went away", 0 TSRMLS_CC); |
38 |
+ // Throw an exception unless we've been requested not to |
39 |
+ if(!no_throw) { |
40 |
+ zend_throw_exception(redis_exception_ce, "Redis server went away", 0 TSRMLS_CC); |
41 |
+ } |
42 |
return -1; |
43 |
} |
44 |
|
45 |
*redis_sock = (RedisSock *) zend_list_find(Z_LVAL_PP(socket), &resource_type); |
46 |
|
47 |
if (!*redis_sock || resource_type != le_redis_sock) { |
48 |
- zend_throw_exception(redis_exception_ce, "Redis server went away", 0 TSRMLS_CC); |
49 |
- return -1; |
50 |
+ // Throw an exception unless we've been requested not to |
51 |
+ if(!no_throw) { |
52 |
+ zend_throw_exception(redis_exception_ce, "Redis server went away", 0 TSRMLS_CC); |
53 |
+ } |
54 |
+ return -1; |
55 |
} |
56 |
|
57 |
return Z_LVAL_PP(socket); |
58 |
@@ -471,7 +478,7 @@ PHP_METHOD(Redis,__destruct) { |
59 |
|
60 |
// Grab our socket |
61 |
RedisSock *redis_sock; |
62 |
- if (redis_sock_get(getThis(), &redis_sock TSRMLS_CC) < 0) { |
63 |
+ if (redis_sock_get(getThis(), &redis_sock TSRMLS_CC, 1) < 0) { |
64 |
RETURN_FALSE; |
65 |
} |
66 |
|
67 |
@@ -504,7 +511,7 @@ PHP_METHOD(Redis, pconnect) |
68 |
} else { |
69 |
/* reset multi/exec state if there is one. */ |
70 |
RedisSock *redis_sock; |
71 |
- if (redis_sock_get(getThis(), &redis_sock TSRMLS_CC) < 0) { |
72 |
+ if (redis_sock_get(getThis(), &redis_sock TSRMLS_CC, 0) < 0) { |
73 |
RETURN_FALSE; |
74 |
} |
75 |
|
76 |
@@ -547,7 +554,7 @@ PHPAPI int redis_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent) { |
77 |
} |
78 |
|
79 |
/* if there is a redis sock already we have to remove it from the list */ |
80 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) > 0) { |
81 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) > 0) { |
82 |
if (zend_hash_find(Z_OBJPROP_P(object), "socket", |
83 |
sizeof("socket"), (void **) &socket) == FAILURE) { |
84 |
/* maybe there is a socket but the id isn't known.. what to do? */ |
85 |
@@ -587,7 +594,7 @@ PHP_METHOD(Redis, close) |
86 |
RETURN_FALSE; |
87 |
} |
88 |
|
89 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
90 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
91 |
RETURN_FALSE; |
92 |
} |
93 |
|
94 |
@@ -617,7 +624,7 @@ PHP_METHOD(Redis, set) |
95 |
RETURN_FALSE; |
96 |
} |
97 |
|
98 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
99 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
100 |
RETURN_FALSE; |
101 |
} |
102 |
|
103 |
@@ -656,7 +663,7 @@ PHP_METHOD(Redis, setex) |
104 |
RETURN_FALSE; |
105 |
} |
106 |
|
107 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
108 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
109 |
RETURN_FALSE; |
110 |
} |
111 |
|
112 |
@@ -691,7 +698,7 @@ PHP_METHOD(Redis, setnx) |
113 |
RETURN_FALSE; |
114 |
} |
115 |
|
116 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
117 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
118 |
RETURN_FALSE; |
119 |
} |
120 |
|
121 |
@@ -729,7 +736,7 @@ PHP_METHOD(Redis, getSet) |
122 |
RETURN_FALSE; |
123 |
} |
124 |
|
125 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
126 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
127 |
RETURN_FALSE; |
128 |
} |
129 |
|
130 |
@@ -763,7 +770,7 @@ PHP_METHOD(Redis, randomKey) |
131 |
RETURN_FALSE; |
132 |
} |
133 |
|
134 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
135 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
136 |
RETURN_FALSE; |
137 |
} |
138 |
|
139 |
@@ -778,6 +785,39 @@ PHP_METHOD(Redis, randomKey) |
140 |
} |
141 |
/* }}} */ |
142 |
|
143 |
+/* {{{ proto string Redis::echo(string key) |
144 |
+ */ |
145 |
+PHP_METHOD(Redis, echo) |
146 |
+{ |
147 |
+ zval *object; |
148 |
+ RedisSock *redis_sock; |
149 |
+ char *key = NULL, *cmd; |
150 |
+ int key_len, cmd_len; |
151 |
+ int key_free; |
152 |
+ |
153 |
+ if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", |
154 |
+ &object, redis_ce, |
155 |
+ &key, &key_len) == FAILURE) { |
156 |
+ RETURN_FALSE; |
157 |
+ } |
158 |
+ |
159 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
160 |
+ RETURN_FALSE; |
161 |
+ } |
162 |
+ |
163 |
+ key_free = redis_key_prefix(redis_sock, &key, &key_len TSRMLS_CC); |
164 |
+ cmd_len = redis_cmd_format_static(&cmd, "ECHO", "s", key, key_len); |
165 |
+ if(key_free) efree(key); |
166 |
+ |
167 |
+ REDIS_PROCESS_REQUEST(redis_sock, cmd, cmd_len); |
168 |
+ IF_ATOMIC() { |
169 |
+ redis_string_response(INTERNAL_FUNCTION_PARAM_PASSTHRU, redis_sock, NULL, NULL); |
170 |
+ } |
171 |
+ REDIS_PROCESS_RESPONSE(redis_string_response); |
172 |
+ |
173 |
+} |
174 |
+/* }}} */ |
175 |
+ |
176 |
/* {{{ proto string Redis::renameKey(string key_src, string key_dst) |
177 |
*/ |
178 |
PHP_METHOD(Redis, renameKey) |
179 |
@@ -796,7 +836,7 @@ PHP_METHOD(Redis, renameKey) |
180 |
RETURN_FALSE; |
181 |
} |
182 |
|
183 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
184 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
185 |
RETURN_FALSE; |
186 |
} |
187 |
|
188 |
@@ -833,7 +873,7 @@ PHP_METHOD(Redis, renameNx) |
189 |
RETURN_FALSE; |
190 |
} |
191 |
|
192 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
193 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
194 |
RETURN_FALSE; |
195 |
} |
196 |
|
197 |
@@ -868,7 +908,7 @@ PHP_METHOD(Redis, get) |
198 |
RETURN_FALSE; |
199 |
} |
200 |
|
201 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
202 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
203 |
RETURN_FALSE; |
204 |
} |
205 |
|
206 |
@@ -900,7 +940,7 @@ PHP_METHOD(Redis, ping) |
207 |
RETURN_FALSE; |
208 |
} |
209 |
|
210 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
211 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
212 |
RETURN_FALSE; |
213 |
} |
214 |
|
215 |
@@ -929,7 +969,7 @@ PHPAPI void redis_atomic_increment(INTERNAL_FUNCTION_PARAMETERS, char *keyword, |
216 |
RETURN_FALSE; |
217 |
} |
218 |
|
219 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
220 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
221 |
RETURN_FALSE; |
222 |
} |
223 |
key_free = redis_key_prefix(redis_sock, &key, &key_len TSRMLS_CC); |
224 |
@@ -1055,7 +1095,7 @@ PHP_METHOD(Redis, getMultiple) |
225 |
RETURN_FALSE; |
226 |
} |
227 |
|
228 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
229 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
230 |
RETURN_FALSE; |
231 |
} |
232 |
|
233 |
@@ -1141,7 +1181,7 @@ PHP_METHOD(Redis, exists) |
234 |
&key, &key_len) == FAILURE) { |
235 |
RETURN_FALSE; |
236 |
} |
237 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
238 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
239 |
RETURN_FALSE; |
240 |
} |
241 |
|
242 |
@@ -1240,7 +1280,7 @@ PHP_METHOD(Redis, getKeys) |
243 |
RETURN_NULL(); |
244 |
} |
245 |
|
246 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
247 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
248 |
RETURN_FALSE; |
249 |
} |
250 |
|
251 |
@@ -1274,7 +1314,7 @@ PHP_METHOD(Redis, type) |
252 |
RETURN_NULL(); |
253 |
} |
254 |
|
255 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
256 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
257 |
RETURN_FALSE; |
258 |
} |
259 |
|
260 |
@@ -1304,7 +1344,7 @@ PHP_METHOD(Redis, append) |
261 |
RETURN_NULL(); |
262 |
} |
263 |
|
264 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
265 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
266 |
RETURN_FALSE; |
267 |
} |
268 |
|
269 |
@@ -1333,7 +1373,7 @@ PHP_METHOD(Redis, getRange) |
270 |
RETURN_FALSE; |
271 |
} |
272 |
|
273 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
274 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
275 |
RETURN_FALSE; |
276 |
} |
277 |
|
278 |
@@ -1361,7 +1401,7 @@ PHP_METHOD(Redis, setRange) |
279 |
RETURN_FALSE; |
280 |
} |
281 |
|
282 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
283 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
284 |
RETURN_FALSE; |
285 |
} |
286 |
|
287 |
@@ -1389,7 +1429,7 @@ PHP_METHOD(Redis, getBit) |
288 |
RETURN_FALSE; |
289 |
} |
290 |
|
291 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
292 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
293 |
RETURN_FALSE; |
294 |
} |
295 |
|
296 |
@@ -1418,7 +1458,7 @@ PHP_METHOD(Redis, setBit) |
297 |
RETURN_FALSE; |
298 |
} |
299 |
|
300 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
301 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
302 |
RETURN_FALSE; |
303 |
} |
304 |
|
305 |
@@ -1447,7 +1487,7 @@ PHP_METHOD(Redis, strlen) |
306 |
RETURN_NULL(); |
307 |
} |
308 |
|
309 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
310 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
311 |
RETURN_FALSE; |
312 |
} |
313 |
|
314 |
@@ -1477,7 +1517,7 @@ generic_push_function(INTERNAL_FUNCTION_PARAMETERS, char *keyword, int keyword_l |
315 |
RETURN_NULL(); |
316 |
} |
317 |
|
318 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
319 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
320 |
RETURN_FALSE; |
321 |
} |
322 |
|
323 |
@@ -1550,7 +1590,7 @@ PHP_METHOD(Redis, lInsert) |
324 |
RETURN_NULL(); |
325 |
} |
326 |
|
327 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
328 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
329 |
RETURN_FALSE; |
330 |
} |
331 |
|
332 |
@@ -1599,7 +1639,7 @@ generic_pop_function(INTERNAL_FUNCTION_PARAMETERS, char *keyword, int keyword_le |
333 |
RETURN_FALSE; |
334 |
} |
335 |
|
336 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
337 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
338 |
RETURN_FALSE; |
339 |
} |
340 |
|
341 |
@@ -1689,7 +1729,7 @@ PHP_METHOD(Redis, lSize) |
342 |
RETURN_FALSE; |
343 |
} |
344 |
|
345 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
346 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
347 |
RETURN_FALSE; |
348 |
} |
349 |
|
350 |
@@ -1725,7 +1765,7 @@ PHP_METHOD(Redis, lRemove) |
351 |
RETURN_NULL(); |
352 |
} |
353 |
|
354 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
355 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
356 |
RETURN_FALSE; |
357 |
} |
358 |
|
359 |
@@ -1761,7 +1801,7 @@ PHP_METHOD(Redis, listTrim) |
360 |
RETURN_FALSE; |
361 |
} |
362 |
|
363 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
364 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
365 |
RETURN_FALSE; |
366 |
} |
367 |
|
368 |
@@ -1794,7 +1834,7 @@ PHP_METHOD(Redis, lGet) |
369 |
RETURN_NULL(); |
370 |
} |
371 |
|
372 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
373 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
374 |
RETURN_FALSE; |
375 |
} |
376 |
|
377 |
@@ -1827,7 +1867,7 @@ PHP_METHOD(Redis, lGetRange) |
378 |
RETURN_FALSE; |
379 |
} |
380 |
|
381 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
382 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
383 |
RETURN_FALSE; |
384 |
} |
385 |
|
386 |
@@ -1878,7 +1918,7 @@ PHP_METHOD(Redis, sSize) |
387 |
RETURN_FALSE; |
388 |
} |
389 |
|
390 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
391 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
392 |
RETURN_FALSE; |
393 |
} |
394 |
|
395 |
@@ -1930,7 +1970,7 @@ PHP_METHOD(Redis, sMove) |
396 |
RETURN_FALSE; |
397 |
} |
398 |
|
399 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
400 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
401 |
RETURN_FALSE; |
402 |
} |
403 |
|
404 |
@@ -1985,7 +2025,7 @@ PHP_METHOD(Redis, sContains) |
405 |
return; |
406 |
} |
407 |
|
408 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
409 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
410 |
RETURN_FALSE; |
411 |
} |
412 |
|
413 |
@@ -2018,7 +2058,7 @@ PHP_METHOD(Redis, sMembers) |
414 |
RETURN_FALSE; |
415 |
} |
416 |
|
417 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
418 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
419 |
RETURN_FALSE; |
420 |
} |
421 |
|
422 |
@@ -2059,7 +2099,7 @@ PHPAPI int generic_multiple_args_cmd(INTERNAL_FUNCTION_PARAMETERS, char *keyword |
423 |
} |
424 |
|
425 |
/* get redis socket */ |
426 |
- if (redis_sock_get(getThis(), out_sock TSRMLS_CC) < 0) { |
427 |
+ if (redis_sock_get(getThis(), out_sock TSRMLS_CC, 0) < 0) { |
428 |
ZVAL_BOOL(return_value, 0); |
429 |
return FAILURE; |
430 |
} |
431 |
@@ -2392,7 +2432,7 @@ PHP_METHOD(Redis, sort) { |
432 |
RETURN_FALSE; |
433 |
} |
434 |
|
435 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
436 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
437 |
RETURN_FALSE; |
438 |
} |
439 |
|
440 |
@@ -2603,7 +2643,7 @@ PHPAPI void generic_sort_cmd(INTERNAL_FUNCTION_PARAMETERS, char *sort, int use_a |
441 |
RETURN_FALSE; |
442 |
} |
443 |
|
444 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
445 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
446 |
RETURN_FALSE; |
447 |
} |
448 |
if(key_len == 0) { |
449 |
@@ -2798,7 +2838,7 @@ PHPAPI void generic_expire_cmd(INTERNAL_FUNCTION_PARAMETERS, char *keyword, int |
450 |
RETURN_FALSE; |
451 |
} |
452 |
|
453 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
454 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
455 |
RETURN_FALSE; |
456 |
} |
457 |
|
458 |
@@ -2847,7 +2887,7 @@ PHP_METHOD(Redis, lSet) { |
459 |
RETURN_FALSE; |
460 |
} |
461 |
|
462 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
463 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
464 |
RETURN_FALSE; |
465 |
} |
466 |
|
467 |
@@ -2874,7 +2914,7 @@ PHPAPI void generic_empty_cmd_impl(INTERNAL_FUNCTION_PARAMETERS, char *cmd, int |
468 |
RETURN_FALSE; |
469 |
} |
470 |
|
471 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
472 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
473 |
RETURN_FALSE; |
474 |
} |
475 |
|
476 |
@@ -2921,7 +2961,7 @@ PHPAPI void generic_empty_long_cmd(INTERNAL_FUNCTION_PARAMETERS, char *cmd, int |
477 |
RETURN_FALSE; |
478 |
} |
479 |
|
480 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
481 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
482 |
RETURN_FALSE; |
483 |
} |
484 |
|
485 |
@@ -2988,7 +3028,7 @@ PHP_METHOD(Redis, auth) { |
486 |
RETURN_FALSE; |
487 |
} |
488 |
|
489 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
490 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
491 |
RETURN_FALSE; |
492 |
} |
493 |
|
494 |
@@ -3017,7 +3057,7 @@ PHP_METHOD(Redis, persist) { |
495 |
RETURN_FALSE; |
496 |
} |
497 |
|
498 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
499 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
500 |
RETURN_FALSE; |
501 |
} |
502 |
|
503 |
@@ -3048,7 +3088,7 @@ PHP_METHOD(Redis, ttl) { |
504 |
RETURN_FALSE; |
505 |
} |
506 |
|
507 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
508 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
509 |
RETURN_FALSE; |
510 |
} |
511 |
|
512 |
@@ -3079,7 +3119,7 @@ PHP_METHOD(Redis, info) { |
513 |
RETURN_FALSE; |
514 |
} |
515 |
|
516 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
517 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
518 |
RETURN_FALSE; |
519 |
} |
520 |
|
521 |
@@ -3118,7 +3158,7 @@ PHP_METHOD(Redis, select) { |
522 |
RETURN_FALSE; |
523 |
} |
524 |
|
525 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
526 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
527 |
RETURN_FALSE; |
528 |
} |
529 |
|
530 |
@@ -3148,7 +3188,7 @@ PHP_METHOD(Redis, move) { |
531 |
RETURN_FALSE; |
532 |
} |
533 |
|
534 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
535 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
536 |
RETURN_FALSE; |
537 |
} |
538 |
|
539 |
@@ -3183,7 +3223,7 @@ generic_mset(INTERNAL_FUNCTION_PARAMETERS, char *kw, void (*fun)(INTERNAL_FUNCTI |
540 |
RETURN_FALSE; |
541 |
} |
542 |
|
543 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
544 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
545 |
RETURN_FALSE; |
546 |
} |
547 |
|
548 |
@@ -3307,7 +3347,7 @@ PHP_METHOD(Redis, rpoplpush) |
549 |
zval *object; |
550 |
RedisSock *redis_sock; |
551 |
char *srckey = NULL, *dstkey = NULL; |
552 |
- int srckey_len, dstkey_len, cmd_len; |
553 |
+ int srckey_len, dstkey_len; |
554 |
|
555 |
if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oss", |
556 |
&object, redis_ce, &srckey, &srckey_len, |
557 |
@@ -3315,7 +3355,7 @@ PHP_METHOD(Redis, rpoplpush) |
558 |
RETURN_FALSE; |
559 |
} |
560 |
|
561 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
562 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
563 |
RETURN_FALSE; |
564 |
} |
565 |
|
566 |
@@ -3339,7 +3379,7 @@ PHP_METHOD(Redis, brpoplpush) |
567 |
RETURN_FALSE; |
568 |
} |
569 |
|
570 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
571 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
572 |
RETURN_FALSE; |
573 |
} |
574 |
|
575 |
@@ -3367,7 +3407,7 @@ PHP_METHOD(Redis, zAdd) { |
576 |
int argc = ZEND_NUM_ARGS(), i; |
577 |
|
578 |
/* get redis socket */ |
579 |
- if (redis_sock_get(getThis(), &redis_sock TSRMLS_CC) < 0) { |
580 |
+ if (redis_sock_get(getThis(), &redis_sock TSRMLS_CC, 0) < 0) { |
581 |
RETURN_FALSE; |
582 |
} |
583 |
|
584 |
@@ -3466,7 +3506,7 @@ PHP_METHOD(Redis, zRange) |
585 |
RETURN_FALSE; |
586 |
} |
587 |
|
588 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
589 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
590 |
RETURN_FALSE; |
591 |
} |
592 |
|
593 |
@@ -3529,7 +3569,7 @@ PHP_METHOD(Redis, zDeleteRangeByScore) |
594 |
RETURN_FALSE; |
595 |
} |
596 |
|
597 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
598 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
599 |
RETURN_FALSE; |
600 |
} |
601 |
|
602 |
@@ -3562,7 +3602,7 @@ PHP_METHOD(Redis, zDeleteRangeByRank) |
603 |
RETURN_FALSE; |
604 |
} |
605 |
|
606 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
607 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
608 |
RETURN_FALSE; |
609 |
} |
610 |
|
611 |
@@ -3596,7 +3636,7 @@ PHP_METHOD(Redis, zReverseRange) |
612 |
RETURN_FALSE; |
613 |
} |
614 |
|
615 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
616 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
617 |
RETURN_FALSE; |
618 |
} |
619 |
|
620 |
@@ -3649,7 +3689,7 @@ redis_generic_zrange_by_score(INTERNAL_FUNCTION_PARAMETERS, char *keyword) { |
621 |
RETURN_FALSE; |
622 |
} |
623 |
|
624 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
625 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
626 |
RETURN_FALSE; |
627 |
} |
628 |
|
629 |
@@ -3755,7 +3795,7 @@ PHP_METHOD(Redis, zCount) |
630 |
RETURN_FALSE; |
631 |
} |
632 |
|
633 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
634 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
635 |
RETURN_FALSE; |
636 |
} |
637 |
|
638 |
@@ -3786,7 +3826,7 @@ PHP_METHOD(Redis, zCard) |
639 |
RETURN_FALSE; |
640 |
} |
641 |
|
642 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
643 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
644 |
RETURN_FALSE; |
645 |
} |
646 |
|
647 |
@@ -3820,7 +3860,7 @@ PHP_METHOD(Redis, zScore) |
648 |
RETURN_FALSE; |
649 |
} |
650 |
|
651 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
652 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
653 |
RETURN_FALSE; |
654 |
} |
655 |
|
656 |
@@ -3853,7 +3893,7 @@ PHPAPI void generic_rank_method(INTERNAL_FUNCTION_PARAMETERS, char *keyword, int |
657 |
RETURN_FALSE; |
658 |
} |
659 |
|
660 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
661 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
662 |
RETURN_FALSE; |
663 |
} |
664 |
|
665 |
@@ -3903,7 +3943,7 @@ PHPAPI void generic_incrby_method(INTERNAL_FUNCTION_PARAMETERS, char *keyword, i |
666 |
RETURN_FALSE; |
667 |
} |
668 |
|
669 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
670 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
671 |
RETURN_FALSE; |
672 |
} |
673 |
|
674 |
@@ -3948,7 +3988,7 @@ PHPAPI void generic_z_command(INTERNAL_FUNCTION_PARAMETERS, char *command, int c |
675 |
RETURN_FALSE; |
676 |
} |
677 |
|
678 |
- if(redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
679 |
+ if(redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
680 |
RETURN_FALSE; |
681 |
} |
682 |
|
683 |
@@ -4126,7 +4166,7 @@ generic_hset(INTERNAL_FUNCTION_PARAMETERS, char *kw, void (*fun)(INTERNAL_FUNCTI |
684 |
RETURN_FALSE; |
685 |
} |
686 |
|
687 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
688 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
689 |
RETURN_FALSE; |
690 |
} |
691 |
|
692 |
@@ -4170,7 +4210,7 @@ PHP_METHOD(Redis, hGet) |
693 |
RETURN_FALSE; |
694 |
} |
695 |
|
696 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
697 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
698 |
RETURN_FALSE; |
699 |
} |
700 |
key_free = redis_key_prefix(redis_sock, &key, &key_len TSRMLS_CC); |
701 |
@@ -4200,7 +4240,7 @@ PHP_METHOD(Redis, hLen) |
702 |
RETURN_FALSE; |
703 |
} |
704 |
|
705 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
706 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
707 |
RETURN_FALSE; |
708 |
} |
709 |
|
710 |
@@ -4232,7 +4272,7 @@ generic_hash_command_2(INTERNAL_FUNCTION_PARAMETERS, char *keyword, int keyword_ |
711 |
return NULL; |
712 |
} |
713 |
|
714 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
715 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
716 |
ZVAL_BOOL(return_value, 0); |
717 |
return NULL; |
718 |
} |
719 |
@@ -4293,7 +4333,7 @@ generic_hash_command_1(INTERNAL_FUNCTION_PARAMETERS, char *keyword, int keyword_ |
720 |
return NULL; |
721 |
} |
722 |
|
723 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
724 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
725 |
ZVAL_BOOL(return_value, 0); |
726 |
return NULL; |
727 |
} |
728 |
@@ -4441,7 +4481,7 @@ PHP_METHOD(Redis, hIncrBy) |
729 |
RETURN_FALSE; |
730 |
} |
731 |
|
732 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
733 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
734 |
RETURN_FALSE; |
735 |
} |
736 |
|
737 |
@@ -4492,7 +4532,7 @@ PHP_METHOD(Redis, hMget) { |
738 |
RETURN_FALSE; |
739 |
} |
740 |
|
741 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
742 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
743 |
RETURN_FALSE; |
744 |
} |
745 |
nb_fields = zend_hash_num_elements(Z_ARRVAL_P(z_array)); |
746 |
@@ -4572,7 +4612,7 @@ PHP_METHOD(Redis, hMset) |
747 |
RETURN_FALSE; |
748 |
} |
749 |
|
750 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
751 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
752 |
RETURN_FALSE; |
753 |
} |
754 |
|
755 |
@@ -4681,7 +4721,7 @@ PHP_METHOD(Redis, multi) |
756 |
|
757 |
/* if the flag is activated, send the command, the reply will be "QUEUED" or -ERR */ |
758 |
|
759 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
760 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
761 |
RETURN_FALSE; |
762 |
} |
763 |
|
764 |
@@ -4730,7 +4770,7 @@ PHP_METHOD(Redis, discard) |
765 |
RETURN_FALSE; |
766 |
} |
767 |
|
768 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
769 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
770 |
RETURN_FALSE; |
771 |
} |
772 |
|
773 |
@@ -4832,7 +4872,7 @@ PHP_METHOD(Redis, exec) |
774 |
&object, redis_ce) == FAILURE) { |
775 |
RETURN_FALSE; |
776 |
} |
777 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
778 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
779 |
RETURN_FALSE; |
780 |
} |
781 |
|
782 |
@@ -4931,7 +4971,7 @@ PHP_METHOD(Redis, pipeline) |
783 |
} |
784 |
|
785 |
/* if the flag is activated, send the command, the reply will be "QUEUED" or -ERR */ |
786 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
787 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
788 |
RETURN_FALSE; |
789 |
} |
790 |
redis_sock->mode = PIPELINE; |
791 |
@@ -4963,7 +5003,7 @@ PHP_METHOD(Redis, publish) |
792 |
RETURN_NULL(); |
793 |
} |
794 |
|
795 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
796 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
797 |
RETURN_FALSE; |
798 |
} |
799 |
|
800 |
@@ -5004,7 +5044,7 @@ PHP_METHOD(Redis, subscribe) |
801 |
RETURN_FALSE; |
802 |
} |
803 |
|
804 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
805 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
806 |
RETURN_FALSE; |
807 |
} |
808 |
|
809 |
@@ -5164,7 +5204,7 @@ PHP_METHOD(Redis, unsubscribe) |
810 |
&object, redis_ce, &array) == FAILURE) { |
811 |
RETURN_FALSE; |
812 |
} |
813 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
814 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
815 |
RETURN_FALSE; |
816 |
} |
817 |
|
818 |
@@ -5248,7 +5288,7 @@ PHP_METHOD(Redis, slaveof) |
819 |
&object, redis_ce, &host, &host_len, &port) == FAILURE) { |
820 |
RETURN_FALSE; |
821 |
} |
822 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
823 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
824 |
RETURN_FALSE; |
825 |
} |
826 |
|
827 |
@@ -5280,7 +5320,7 @@ PHP_METHOD(Redis, object) |
828 |
&object, redis_ce, &info, &info_len, &key, &key_len) == FAILURE) { |
829 |
RETURN_FALSE; |
830 |
} |
831 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
832 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
833 |
RETURN_FALSE; |
834 |
} |
835 |
|
836 |
@@ -5318,7 +5358,7 @@ PHP_METHOD(Redis, getOption) { |
837 |
RETURN_FALSE; |
838 |
} |
839 |
|
840 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
841 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
842 |
RETURN_FALSE; |
843 |
} |
844 |
|
845 |
@@ -5354,7 +5394,7 @@ PHP_METHOD(Redis, setOption) { |
846 |
RETURN_FALSE; |
847 |
} |
848 |
|
849 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
850 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
851 |
RETURN_FALSE; |
852 |
} |
853 |
|
854 |
@@ -5414,7 +5454,7 @@ PHP_METHOD(Redis, config) |
855 |
RETURN_FALSE; |
856 |
} |
857 |
|
858 |
- if (redis_sock_get(object, &redis_sock TSRMLS_CC) < 0) { |
859 |
+ if (redis_sock_get(object, &redis_sock TSRMLS_CC, 0) < 0) { |
860 |
RETURN_FALSE; |
861 |
} |
862 |
|
863 |
diff --git a/tests/TestRedis.php b/tests/TestRedis.php |
864 |
index 1033b01..46af355 100644 |
865 |
--- a/tests/TestRedis.php |
866 |
+++ tests/TestRedis.php |
867 |
@@ -115,6 +115,12 @@ class Redis_Test extends TestSuite |
868 |
$this->assertEquals($s, $this->redis->get('x')); |
869 |
} |
870 |
|
871 |
+ public function testEcho() { |
872 |
+ $this->assertEquals($this->redis->echo("hello"), "hello"); |
873 |
+ $this->assertEquals($this->redis->echo(""), ""); |
874 |
+ $this->assertEquals($this->redis->echo(" 0123 "), " 0123 "); |
875 |
+ } |
876 |
+ |
877 |
public function testErr() { |
878 |
|
879 |
$this->redis->set('x', '-ERR'); |