3535#define R_SUB_CALLBACK_FT_TYPE 2
3636
3737static int le_redis_sock ;
38- static int le_redis_multi_access_type ;
3938
4039static zend_class_entry * redis_ce ;
4140static zend_class_entry * redis_exception_ce ;
@@ -271,20 +270,14 @@ PHP_MINIT_FUNCTION(redis)
271270 redis_sock_name , module_number
272271 );
273272
274- le_redis_multi_access_type = zend_register_list_destructors_ex (
275- redis_destructor_multi_access ,
276- NULL ,
277- redis_multi_access_type_name , module_number
278- );
279-
280273 add_constant_long (redis_ce , "REDIS_NOT_FOUND" , REDIS_NOT_FOUND );
281274 add_constant_long (redis_ce , "REDIS_STRING" , REDIS_STRING );
282275 add_constant_long (redis_ce , "REDIS_SET" , REDIS_SET );
283276 add_constant_long (redis_ce , "REDIS_LIST" , REDIS_LIST );
284277
285- add_constant_long (redis_ce , "ATOMIC" , REDIS_ATOMIC );
286- add_constant_long (redis_ce , "MULTI" , REDIS_MULTI );
287- add_constant_long (redis_ce , "PIPELINE" , REDIS_PIPELINE );
278+ add_constant_long (redis_ce , "ATOMIC" , ATOMIC );
279+ add_constant_long (redis_ce , "MULTI" , MULTI );
280+ add_constant_long (redis_ce , "PIPELINE" , PIPELINE );
288281
289282 return SUCCESS ;
290283}
@@ -333,37 +326,8 @@ PHP_METHOD(Redis, __construct)
333326 if (zend_parse_parameters (ZEND_NUM_ARGS () TSRMLS_CC , "" ) == FAILURE ) {
334327 RETURN_FALSE ;
335328 }
336- int multi_flag = 0 , id ;
337- object = getThis ();
338- id = zend_list_insert (& multi_flag , le_redis_multi_access_type );
339- add_property_resource (object , "multi_flag" , id );
340-
341- set_flag (object , REDIS_ATOMIC TSRMLS_CC );
342-
343329}
344330/* }}} */
345- PHPAPI int get_flag (zval * object TSRMLS_DC )
346- {
347- zval * * multi_flag ;
348- int flag , flag_result ;
349-
350- zend_hash_find (Z_OBJPROP_P (object ), "multi_flag" , sizeof ("multi_flag" ), (void * * ) & multi_flag );
351- flag = (int )(long )zend_list_find (Z_LVAL_PP (multi_flag ), & flag_result );
352-
353- return flag ;
354- }
355-
356- PHPAPI void set_flag (zval * object , int new_flag TSRMLS_DC )
357- {
358- zval * * multi_flag = NULL ;
359-
360- zend_hash_find (Z_OBJPROP_P (object ), "multi_flag" , sizeof ("multi_flag" ), (void * * ) & multi_flag );
361- zend_list_delete (Z_LVAL_PP (multi_flag ));
362-
363- int id = zend_list_insert ((void * )(long )new_flag , le_redis_multi_access_type );
364- add_property_resource (object , "multi_flag" , id );
365-
366- }
367331
368332/* {{{ proto boolean Redis::connect(string host, int port [, int timeout])
369333 */
@@ -4193,7 +4157,7 @@ PHPAPI int redis_response_enqueued(RedisSock *redis_sock TSRMLS_DC) {
41934157 return ret ;
41944158}
41954159
4196- /* flag : get, set {REDIS_ATOMIC, REDIS_MULTI, REDIS_PIPELINE } */
4160+ /* flag : get, set {ATOMIC, MULTI, PIPELINE } */
41974161
41984162PHP_METHOD (Redis , multi )
41994163{
@@ -4203,7 +4167,7 @@ PHP_METHOD(Redis, multi)
42034167 int response_len , cmd_len ;
42044168 char * response ;
42054169 zval * object ;
4206- long multi_value = REDIS_MULTI ;
4170+ long multi_value = MULTI ;
42074171
42084172 if (zend_parse_method_parameters (ZEND_NUM_ARGS () TSRMLS_CC , getThis (), "O|l" ,
42094173 & object , redis_ce , & multi_value ) == FAILURE ) {
@@ -4216,8 +4180,8 @@ PHP_METHOD(Redis, multi)
42164180 RETURN_FALSE ;
42174181 }
42184182
4219- if (multi_value == REDIS_MULTI || multi_value == REDIS_PIPELINE ) {
4220- set_flag ( object , multi_value TSRMLS_CC ) ;
4183+ if (multi_value == MULTI || multi_value == PIPELINE ) {
4184+ redis_sock -> mode = multi_value ;
42214185 } else {
42224186 RETURN_FALSE ;
42234187 }
@@ -4264,7 +4228,7 @@ PHP_METHOD(Redis, discard)
42644228 RETURN_FALSE ;
42654229 }
42664230
4267- set_flag ( object , 0 TSRMLS_CC ) ;
4231+ redis_sock -> mode = ATOMIC ;
42684232
42694233 if (redis_sock_get (object , & redis_sock TSRMLS_CC ) < 0 ) {
42704234 RETURN_FALSE ;
@@ -4395,11 +4359,11 @@ PHP_METHOD(Redis, exec)
43954359 if (redis_sock_read_multibulk_multi_reply (INTERNAL_FUNCTION_PARAM_PASSTHRU , redis_sock ) < 0 ) {
43964360 zval_dtor (return_value );
43974361 free_reply_callbacks (object , redis_sock );
4398- set_flag ( object , REDIS_ATOMIC TSRMLS_CC ) ;
4362+ redis_sock -> mode = ATOMIC ;
43994363 RETURN_FALSE ;
44004364 }
44014365 free_reply_callbacks (object , redis_sock );
4402- set_flag ( object , REDIS_ATOMIC TSRMLS_CC ) ;
4366+ redis_sock -> mode = ATOMIC ;
44034367 }
44044368
44054369 IF_PIPELINE () {
@@ -4426,23 +4390,23 @@ PHP_METHOD(Redis, exec)
44264390 if (redis_sock_write (redis_sock , request , total ) < 0 ) {
44274391 free (request );
44284392 free_reply_callbacks (object , redis_sock );
4429- set_flag ( object , REDIS_ATOMIC TSRMLS_CC ) ;
4393+ redis_sock -> mode = ATOMIC ;
44304394 RETURN_FALSE ;
44314395 }
44324396 free (request );
44334397 } else {
4434- set_flag ( object , REDIS_ATOMIC TSRMLS_CC ) ;
4398+ redis_sock -> mode = ATOMIC ;
44354399 free_reply_callbacks (object , redis_sock );
44364400 array_init (return_value ); /* empty array when no command was run. */
44374401 return ;
44384402 }
44394403
44404404 if (redis_sock_read_multibulk_pipeline_reply (INTERNAL_FUNCTION_PARAM_PASSTHRU , redis_sock ) < 0 ) {
4441- set_flag ( object , REDIS_ATOMIC TSRMLS_CC ) ;
4405+ redis_sock -> mode = ATOMIC ;
44424406 free_reply_callbacks (object , redis_sock );
44434407 RETURN_FALSE ;
44444408 }
4445- set_flag ( object , REDIS_ATOMIC TSRMLS_CC ) ;
4409+ redis_sock -> mode = ATOMIC ;
44464410 free_reply_callbacks (object , redis_sock );
44474411 }
44484412}
@@ -4478,7 +4442,7 @@ PHP_METHOD(Redis, pipeline)
44784442 if (redis_sock_get (object , & redis_sock TSRMLS_CC ) < 0 ) {
44794443 RETURN_FALSE ;
44804444 }
4481- set_flag ( object , REDIS_PIPELINE TSRMLS_CC ) ;
4445+ redis_sock -> mode = PIPELINE ;
44824446
44834447 /*
44844448 NB : we keep the function fold, to detect the last function.
0 commit comments