From acd324545685e3368bd8d9c626e7e019d4cdeb79 Mon Sep 17 00:00:00 2001 From: Emmanuel Merali Date: Mon, 25 Feb 2013 00:38:47 +0200 Subject: Added lazy_connect option to RedisArray Added an option to let each RedisArray connection connect lazily to their respective server. This is useful then working with a redis cluster composed of many shards which are not necessarily in use all at once. --- redis_array.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'redis_array.c') diff --git a/redis_array.c b/redis_array.c index be95c50d..fb507f55 100644 --- a/redis_array.c +++ b/redis_array.c @@ -194,6 +194,7 @@ PHP_METHOD(RedisArray, __construct) zend_bool b_index = 0, b_autorehash = 0; HashTable *hPrev = NULL, *hOpts = NULL; long l_retry_interval = 0; + zend_bool b_lazy_connect = 0; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z|a", &z0, &z_opts) == FAILURE) { RETURN_FALSE; @@ -236,7 +237,7 @@ PHP_METHOD(RedisArray, __construct) } /* extract retry_interval option. */ - zval **z_retry_interval_pp; + zval **z_retry_interval_pp; if (FAILURE != zend_hash_find(hOpts, "retry_interval", sizeof("retry_interval"), (void**)&z_retry_interval_pp)) { if (Z_TYPE_PP(z_retry_interval_pp) == IS_LONG || Z_TYPE_PP(z_retry_interval_pp) == IS_STRING) { if (Z_TYPE_PP(z_retry_interval_pp) == IS_LONG) { @@ -247,6 +248,11 @@ PHP_METHOD(RedisArray, __construct) } } } + + /* extract lazy connect option. */ + if(FAILURE != zend_hash_find(hOpts, "lazy_connect", sizeof("lazy_connect"), (void**)&zpData) && Z_TYPE_PP(zpData) == IS_BOOL) { + b_lazy_connect = Z_BVAL_PP(zpData); + } } /* extract either name of list of hosts from z0 */ @@ -256,7 +262,7 @@ PHP_METHOD(RedisArray, __construct) break; case IS_ARRAY: - ra = ra_make_array(Z_ARRVAL_P(z0), z_fun, z_dist, hPrev, b_index, l_retry_interval TSRMLS_CC); + ra = ra_make_array(Z_ARRVAL_P(z0), z_fun, z_dist, hPrev, b_index, l_retry_interval, b_lazy_connect TSRMLS_CC); break; default: -- cgit v1.2.3