@@ -155,6 +155,7 @@ static zend_function_entry redis_functions[] = {
155
155
PHP_ME (Redis , slaveof , NULL , ZEND_ACC_PUBLIC )
156
156
PHP_ME (Redis , object , NULL , ZEND_ACC_PUBLIC )
157
157
PHP_ME (Redis , bitop , NULL , ZEND_ACC_PUBLIC )
158
+ PHP_ME (Redis , bitcount , NULL , ZEND_ACC_PUBLIC )
158
159
159
160
/* 1.1 */
160
161
PHP_ME (Redis , mset , NULL , ZEND_ACC_PUBLIC )
@@ -676,6 +677,40 @@ PHP_METHOD(Redis, bitop)
676
677
}
677
678
/* }}} */
678
679
680
+ /* {{{ proto boolean Redis::bitcount(string key, [int start], [int end])
681
+ */
682
+ PHP_METHOD (Redis , bitcount )
683
+ {
684
+ zval * object ;
685
+ RedisSock * redis_sock ;
686
+ char * key = NULL , * cmd ;
687
+ int key_len , cmd_len , key_free ;
688
+ long start = 0 , end = -1 ;
689
+
690
+ if (zend_parse_method_parameters (ZEND_NUM_ARGS () TSRMLS_CC , getThis (), "Os|ll" ,
691
+ & object , redis_ce ,
692
+ & key , & key_len , & start , & end ) == FAILURE ) {
693
+ RETURN_FALSE ;
694
+ }
695
+
696
+ if (redis_sock_get (object , & redis_sock TSRMLS_CC , 0 ) < 0 ) {
697
+ RETURN_FALSE ;
698
+ }
699
+
700
+ /* BITCOUNT key start end */
701
+ key_free = redis_key_prefix (redis_sock , & key , & key_len TSRMLS_CC );
702
+ cmd_len = redis_cmd_format_static (& cmd , "BITCOUNT" , "sdd" , key , key_len , (int )start , (int )end );
703
+ if (key_free ) efree (key );
704
+
705
+ REDIS_PROCESS_REQUEST (redis_sock , cmd , cmd_len );
706
+ IF_ATOMIC () {
707
+ redis_long_response (INTERNAL_FUNCTION_PARAM_PASSTHRU , redis_sock , NULL , NULL );
708
+ }
709
+ REDIS_PROCESS_RESPONSE (redis_long_response );
710
+
711
+ }
712
+ /* }}} */
713
+
679
714
/* {{{ proto boolean Redis::close()
680
715
*/
681
716
PHP_METHOD (Redis , close )
0 commit comments