@@ -1915,6 +1915,12 @@ PHPAPI int generic_multiple_args_cmd(INTERNAL_FUNCTION_PARAMETERS, char *keyword
1915
1915
RETURN_FALSE ;
1916
1916
}
1917
1917
1918
+ /* get redis socket */
1919
+ if (redis_sock_get (getThis (), out_sock TSRMLS_CC ) < 0 ) {
1920
+ RETURN_FALSE ;
1921
+ }
1922
+ redis_sock = * out_sock ;
1923
+
1918
1924
z_args = emalloc (argc * sizeof (zval * ));
1919
1925
if (zend_get_parameters_array (ht , argc , z_args ) == FAILURE ) {
1920
1926
efree (z_args );
@@ -1979,6 +1985,9 @@ PHPAPI int generic_multiple_args_cmd(INTERNAL_FUNCTION_PARAMETERS, char *keyword
1979
1985
/* get current value */
1980
1986
keys [j ] = Z_STRVAL_PP (z_value_pp );
1981
1987
keys_len [j ] = Z_STRLEN_PP (z_value_pp );
1988
+
1989
+ redis_key_prefix (redis_sock , & keys [j ], & keys_len [j ] TSRMLS_CC ); /* add optional prefix */
1990
+
1982
1991
cmd_len += 1 + integer_length (keys_len [j ]) + 2 + keys_len [j ] + 2 ; /* $ + size + NL + string + NL */
1983
1992
j ++ ;
1984
1993
real_argc ++ ;
@@ -2004,6 +2013,9 @@ PHPAPI int generic_multiple_args_cmd(INTERNAL_FUNCTION_PARAMETERS, char *keyword
2004
2013
if (Z_TYPE_P (z_args [i ]) == IS_STRING ) {
2005
2014
keys [j ] = Z_STRVAL_P (z_args [i ]);
2006
2015
keys_len [j ] = Z_STRLEN_P (z_args [i ]);
2016
+
2017
+ redis_key_prefix (redis_sock , & keys [j ], & keys_len [j ] TSRMLS_CC ); /* add optional prefix */
2018
+
2007
2019
cmd_len += 1 + integer_length (keys_len [j ]) + 2 + keys_len [j ] + 2 ; /* $ + size + NL + string + NL */
2008
2020
j ++ ;
2009
2021
real_argc ++ ;
@@ -2017,15 +2029,6 @@ PHPAPI int generic_multiple_args_cmd(INTERNAL_FUNCTION_PARAMETERS, char *keyword
2017
2029
}
2018
2030
}
2019
2031
2020
- /* get redis socket */
2021
- if (redis_sock_get (getThis (), out_sock TSRMLS_CC ) < 0 ) {
2022
- efree (keys );
2023
- efree (keys_len );
2024
- if (z_args ) efree (z_args );
2025
- RETURN_FALSE ;
2026
- }
2027
- redis_sock = * out_sock ;
2028
-
2029
2032
cmd_len += 1 + integer_length (real_argc + 1 ) + 2 ; // *count NL
2030
2033
cmd = emalloc (cmd_len + 1 );
2031
2034
@@ -2045,6 +2048,13 @@ PHPAPI int generic_multiple_args_cmd(INTERNAL_FUNCTION_PARAMETERS, char *keyword
2045
2048
pos += 2 ;
2046
2049
}
2047
2050
2051
+ /* cleanup prefixed keys. */
2052
+ if (redis_sock -> prefix && redis_sock -> prefix_len ) {
2053
+ for (i = 0 ; i < real_argc + (has_timeout ?-1 :0 ); ++ i ) {
2054
+ efree (keys [i ]);
2055
+ }
2056
+ }
2057
+
2048
2058
efree (keys );
2049
2059
efree (keys_len );
2050
2060
0 commit comments