@@ -51,6 +51,7 @@ static zend_function_entry redis_functions[] = {
51
51
PHP_ME (Redis , ping , NULL , ZEND_ACC_PUBLIC )
52
52
PHP_ME (Redis , get , NULL , ZEND_ACC_PUBLIC )
53
53
PHP_ME (Redis , set , NULL , ZEND_ACC_PUBLIC )
54
+ PHP_ME (Redis , setex , NULL , ZEND_ACC_PUBLIC )
54
55
PHP_ME (Redis , setnx , NULL , ZEND_ACC_PUBLIC )
55
56
PHP_ME (Redis , getSet , NULL , ZEND_ACC_PUBLIC )
56
57
PHP_ME (Redis , randomKey , NULL , ZEND_ACC_PUBLIC )
@@ -461,8 +462,51 @@ PHP_METHOD(Redis, set)
461
462
redis_boolean_response (INTERNAL_FUNCTION_PARAM_PASSTHRU , redis_sock , NULL TSRMLS_CC );
462
463
}
463
464
REDIS_PROCESS_RESPONSE (redis_boolean_response );
465
+ }
466
+
467
+ /* {{{ proto boolean Redis::setex(string key, long expire, string value)
468
+ */
469
+ PHP_METHOD (Redis , setex )
470
+ {
471
+ zval * object ;
472
+ RedisSock * redis_sock ;
473
+ char * key = NULL , * val = NULL , * cmd ;
474
+ int key_len , val_len , cmd_len ;
475
+ long expire ;
476
+
477
+ if (zend_parse_method_parameters (ZEND_NUM_ARGS () TSRMLS_CC , getThis (), "Osls" ,
478
+ & object , redis_ce , & key , & key_len ,
479
+ & expire , & val , & val_len ) == FAILURE ) {
480
+ RETURN_FALSE ;
481
+ }
464
482
483
+ if (redis_sock_get (object , & redis_sock TSRMLS_CC ) < 0 ) {
484
+ RETURN_FALSE ;
485
+ }
465
486
487
+ cmd_len = redis_cmd_format (& cmd ,
488
+ "*4" _NL
489
+ "$5" _NL
490
+ "SETEX" _NL
491
+
492
+ "$%d" _NL /* key_len */
493
+ "%s" _NL /* key */
494
+
495
+ "$%d" _NL /* expire_len */
496
+ "%d" _NL /* expire */
497
+
498
+ "$%d" _NL /* val_len */
499
+ "%s" _NL /* val */
500
+
501
+ , key_len , key , key_len
502
+ , integer_length (expire ), expire
503
+ , val_len , val , val_len );
504
+
505
+ REDIS_PROCESS_REQUEST (redis_sock , cmd , cmd_len );
506
+ IF_ATOMIC () {
507
+ redis_boolean_response (INTERNAL_FUNCTION_PARAM_PASSTHRU , redis_sock , NULL TSRMLS_CC );
508
+ }
509
+ REDIS_PROCESS_RESPONSE (redis_boolean_response );
466
510
}
467
511
468
512
/* {{{ proto boolean Redis::setnx(string key, string value)
0 commit comments