@@ -162,6 +162,7 @@ static zend_function_entry redis_functions[] = {
162
162
PHP_ME (Redis , script , NULL , ZEND_ACC_PUBLIC )
163
163
PHP_ME (Redis , dump , NULL , ZEND_ACC_PUBLIC )
164
164
PHP_ME (Redis , restore , NULL , ZEND_ACC_PUBLIC )
165
+ PHP_ME (Redis , migrate , NULL , ZEND_ACC_PUBLIC )
165
166
166
167
PHP_ME (Redis , getLastError , NULL , ZEND_ACC_PUBLIC )
167
168
@@ -6026,6 +6027,39 @@ PHP_METHOD(Redis, restore) {
6026
6027
REDIS_PROCESS_RESPONSE (redis_boolean_response );
6027
6028
}
6028
6029
6030
+ /*
6031
+ * {{{ proto Redis::migrate(host port key dest-db timeout)
6032
+ */
6033
+ PHP_METHOD (Redis , migrate ) {
6034
+ zval * object ;
6035
+ RedisSock * redis_sock ;
6036
+ char * cmd , * host , * key ;
6037
+ int cmd_len , host_len , key_len , port , dest_db , timeout , key_free ;
6038
+
6039
+ // Parse arguments
6040
+ if (zend_parse_method_parameters (ZEND_NUM_ARGS () TSRMLS_C , getThis (), "Oslsll" , & object , redis_ce ,
6041
+ & host , & host_len , & port , & key , & key_len , & dest_db , & timeout ) == FAILURE ) {
6042
+ RETURN_FALSE ;
6043
+ }
6044
+
6045
+ // Grabg our socket
6046
+ if (redis_sock_get (object , & redis_sock TSRMLS_CC , 0 ) < 0 ) {
6047
+ RETURN_FALSE ;
6048
+ }
6049
+
6050
+ // Prefix our key if we need to, build our command
6051
+ key_free = redis_key_prefix (redis_sock , & key , & key_len TSRMLS_CC );
6052
+ cmd_len = redis_cmd_format_static (& cmd , "MIGRATE" , "sdsdd" , host , host_len , port , key , key_len , dest_db , timeout );
6053
+ if (key_free ) efree (key );
6054
+
6055
+ // Kick off our MIGRATE request
6056
+ REDIS_PROCESS_REQUEST (redis_sock , cmd , cmd_len );
6057
+ IF_ATOMIC () {
6058
+ redis_boolean_response (INTERNAL_FUNCTION_PARAM_PASSTHRU , redis_sock , NULL , NULL );
6059
+ }
6060
+ REDIS_PROCESS_RESPONSE (redis_boolean_response );
6061
+ }
6062
+
6029
6063
/*
6030
6064
* {{{ proto Redis::_prefix(key)
6031
6065
*/
0 commit comments