@@ -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