From b408f7aa0676237de81abf32724dacdc6d42d18a Mon Sep 17 00:00:00 2001 From: Emmanuel Merali Date: Thu, 8 Dec 2011 01:52:21 +0200 Subject: Allow use of pipeline in RedisArray --- redis_array.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'redis_array.c') diff --git a/redis_array.c b/redis_array.c index c6794b8b..75100009 100644 --- a/redis_array.c +++ b/redis_array.c @@ -281,7 +281,7 @@ ra_forward_call(INTERNAL_FUNCTION_PARAMETERS, RedisArray *ra, const char *cmd, i b_write_cmd = ra_is_write_cmd(ra, cmd, cmd_len); if(ra->index && b_write_cmd && !ra->z_multi_exec) { /* add MULTI + SADD */ - ra_index_multi(redis_inst TSRMLS_CC); + ra_index_multi(redis_inst TSRMLS_CC, MULTI); } /* pass call through */ @@ -810,7 +810,7 @@ PHP_METHOD(RedisArray, mset) } if(ra->index) { /* add MULTI */ - ra_index_multi(redis_inst TSRMLS_CC); + ra_index_multi(redis_inst TSRMLS_CC, MULTI); } /* call */ @@ -944,7 +944,7 @@ PHP_METHOD(RedisArray, del) } if(ra->index) { /* add MULTI */ - ra_index_multi(redis_inst TSRMLS_CC); + ra_index_multi(redis_inst TSRMLS_CC, MULTI); } /* call */ @@ -989,9 +989,10 @@ PHP_METHOD(RedisArray, multi) zval *z_redis; char *host; int host_len; + long multi_value = MULTI; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", - &object, redis_array_ce, &host, &host_len) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os|l", + &object, redis_array_ce, &host, &host_len, &multi_value) == FAILURE) { RETURN_FALSE; } @@ -1005,11 +1006,15 @@ PHP_METHOD(RedisArray, multi) RETURN_FALSE; } + if(multi_value != MULTI && multi_value != PIPELINE) { + RETURN_FALSE; + } + /* save multi object */ ra->z_multi_exec = z_redis; /* switch redis instance to multi/exec mode. */ - ra_index_multi(z_redis TSRMLS_CC); + ra_index_multi(z_redis TSRMLS_CC, multi_value); /* return this. */ RETURN_ZVAL(object, 1, 0); -- cgit v1.2.3