一、背景
公众号迁移,需要把A服务器的粉丝数据迁移到B的服务器,采取HTTP的方式传输 数据大概500多万 耗时大概25个小时
二、技术方案
调用端:A
- 采用PHP脚本调用api
- A服务器上传PHP脚本,从数据库每次查出1000条数据后调用api执行一次操作
- 通过ID分段同时启用三个进程同时跑
接收端:B服务器
- 采用thinkPHP5框架 通信加密采用openssl
- 一次500条数据批量插入
- 有抛错我会把错误的批次数据写入一个文件,把抛错信息写入另一个文件
- 数据跑完后用脚本单独处理抛错的批次数据,逐条读出,逐条插入,如果插入再失败我会把插入的sql语句记录下来,我就可以手动分析这些SQL为什么会失败
//同步
public function friends()
{
$data2 = '';
$data2 = @file_get_contents('php://input');
$data3 = unserialize(base64_decode(openssl_decrypt($data2,'DES-ECB',self::PWD)));
$data = array_chunk($data3, self::LIMIT);
try{
if(!empty($data)){
$msg = [];
foreach($data as $k => $v){
$erroMsg = '';
try{
Db::name('mp_friends')->insertAll($v);
}catch (\Exception $e){
$erroMsg = $e->getMessage()