@@ -113,6 +113,7 @@ static zend_function_entry redis_functions[] = {
113
113
PHP_ME (Redis , zRange , NULL , ZEND_ACC_PUBLIC )
114
114
PHP_ME (Redis , zReverseRange , NULL , ZEND_ACC_PUBLIC )
115
115
PHP_ME (Redis , zRangeByScore , NULL , ZEND_ACC_PUBLIC )
116
+ PHP_ME (Redis , zCount , NULL , ZEND_ACC_PUBLIC )
116
117
PHP_ME (Redis , zDeleteRangeByScore , NULL , ZEND_ACC_PUBLIC )
117
118
PHP_ME (Redis , zCard , NULL , ZEND_ACC_PUBLIC )
118
119
PHP_ME (Redis , zScore , NULL , ZEND_ACC_PUBLIC )
@@ -3081,6 +3082,54 @@ PHP_METHOD(Redis, zRangeByScore)
3081
3082
}
3082
3083
/* }}} */
3083
3084
3085
+ /* {{{ proto array Redis::zCount(string key, int start , int end)
3086
+ */
3087
+ PHP_METHOD (Redis , zCount )
3088
+ {
3089
+ zval * object ;
3090
+
3091
+ RedisSock * redis_sock ;
3092
+ char * key = NULL , * cmd ;
3093
+ int key_len , cmd_len , response_len ;
3094
+ double start , end ;
3095
+
3096
+ if (zend_parse_method_parameters (ZEND_NUM_ARGS () TSRMLS_CC , getThis (), "Osdd" ,
3097
+ & object , redis_ce ,
3098
+ & key , & key_len , & start , & end ) == FAILURE ) {
3099
+ RETURN_FALSE ;
3100
+ }
3101
+
3102
+ if (redis_sock_get (object , & redis_sock TSRMLS_CC ) < 0 ) {
3103
+ RETURN_FALSE ;
3104
+ }
3105
+
3106
+ cmd_len = redis_cmd_format (& cmd ,
3107
+ "*4" _NL
3108
+
3109
+ "$6" _NL
3110
+ "ZCOUNT" _NL
3111
+
3112
+ "$%d" _NL /* key_len */
3113
+ "%s" _NL /* key */
3114
+
3115
+ "$%d" _NL /* start_len */
3116
+ "%F" _NL /* start */
3117
+
3118
+ "$%d" _NL /* end_len */
3119
+ "%F" _NL /* end */
3120
+
3121
+ , key_len , key , key_len
3122
+ , double_length (start ), start
3123
+ , double_length (end ), end );
3124
+
3125
+ REDIS_PROCESS_REQUEST (redis_sock , cmd , cmd_len );
3126
+ IF_ATOMIC () {
3127
+ redis_long_response (INTERNAL_FUNCTION_PARAM_PASSTHRU , redis_sock , NULL TSRMLS_CC );
3128
+ }
3129
+ REDIS_PROCESS_RESPONSE (redis_long_response );
3130
+ }
3131
+ /* }}} */
3132
+
3084
3133
/* {{{ proto long Redis::zCard(string key)
3085
3134
*/
3086
3135
PHP_METHOD (Redis , zCard )
0 commit comments