@@ -162,6 +162,7 @@ static zend_function_entry redis_functions[] = {
162162     PHP_ME (Redis , script , NULL , ZEND_ACC_PUBLIC )
163163     PHP_ME (Redis , dump , NULL , ZEND_ACC_PUBLIC )
164164     PHP_ME (Redis , restore , NULL , ZEND_ACC_PUBLIC )
165+      PHP_ME (Redis , migrate , NULL , ZEND_ACC_PUBLIC )
165166
166167     PHP_ME (Redis , getLastError , NULL , ZEND_ACC_PUBLIC )
167168
@@ -6026,6 +6027,39 @@ PHP_METHOD(Redis, restore) {
60266027	REDIS_PROCESS_RESPONSE (redis_boolean_response );
60276028}
60286029
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+ 
60296063/* 
60306064 * {{{ proto Redis::_prefix(key) 
60316065 */ 
0 commit comments