request('POST', $server.'/app/'.$path,['verify' => false,'form_params'=>['op'=>'sync','time'=>'1']]); $serverJson=$response->getBody(); $serverData = json_decode($serverJson); $response = $client->request('POST', $localhost.'/app/'.$path,['verify' => false,'form_params'=>['op'=>'sync','time'=>'1']]); $strLocalData = $response->getBody(); $localData = json_decode($strLocalData); $localindex=array(); $insert_to_server=array(); $update_to_server=array(); $insert_to_local=array(); $update_to_local=array(); echo "

{$path}

"; foreach($localData as $local){ $localindex[$local->guid][0]=$local->modify_time; $localindex[$local->guid][1]=false; } foreach($serverData as $sd){ if(isset($localindex[$sd->guid])){ $localindex[$sd->guid][1]=true; if($sd->modify_time>$localindex[$sd->guid][0]){ //服务器数据较新 server data is new than local $update_to_local[]=$sd->guid; } else if($sd->modify_time==$localindex[$sd->guid][0]){ //"相同 same } else{ //"服务器数据较旧 local data is new than server $update_to_server[]=$sd->guid; } } else{ //服务器新增 new recorder in server $insert_to_local[]=$sd->guid; } } foreach($localindex as $x=>$x_value){ if($x_value[1]==false){ //客户端新增 new data in local; $insert_to_server[]=$x; } } $syncCount = count($insert_to_server)+count($update_to_server)+count($insert_to_local)+count($update_to_local); if($syncCount==0){ echo "与服务器数据完全一致,无需更新。
"; } else{ //start sync if(count($insert_to_server)>0){ /* */ echo "需要插入服务器".count($insert_to_server)."条记录
"; $idInLocal = json_encode($insert_to_server, JSON_UNESCAPED_UNICODE); $response = $client->request('POST', $localhost.'/app/'.$path,['verify' => false,'form_params'=>['op'=>'get','id'=>"{$idInLocal}"]]); $localData=$response->getBody(); $response = $client->request('POST', $server.'/app/'.$path,['verify' => false,'form_params'=>['op'=>'insert','data'=>"{$localData}"]]); echo $response->getBody()."
"; } if(count($update_to_server)>0){ /* */ echo "需要更新到服务器".count($update_to_server)."条记录
"; $idInLocal = json_encode($update_to_server, JSON_UNESCAPED_UNICODE); $response = $client->request('POST', $localhost.'/app/'.$path,['verify' => false,'form_params'=>['op'=>'get','id'=>"{$idInLocal}"]]); $localData=$response->getBody(); $response = $client->request('POST', $server.'/app/'.$path,['verify' => false,'form_params'=>['op'=>'update','data'=>"{$localData}"]]); echo $response->getBody()."
"; } if(count($insert_to_local)>0){ echo "需要新增到本地".count($insert_to_local)."条记录
"; $idInServer = json_encode($insert_to_local, JSON_UNESCAPED_UNICODE); $response = $client->request('POST', $server.'/app/'.$path,['verify' => false,'form_params'=>['op'=>'get','id'=>"{$idInServer}"]]); $serverData=$response->getBody(); $response = $client->request('POST', $localhost.'/app/'.$path, ['verify' => false,'form_params'=>['op'=>'insert','data'=>"{$serverData}"]]); echo $response->getBody()."
"; } if(count($update_to_local)>0){ echo "需要更新到本地".count($update_to_local)."条记录
"; $idInServer = json_encode($update_to_local, JSON_UNESCAPED_UNICODE); $response = $client->request('POST', $server.'/app/'.$path,['verify' => false,'form_params'=>['op'=>'get','id'=>"{$idInServer}"]]); $serverData=$response->getBody(); $response = $client->request('POST', $localhost.'/app/'.$path,['verify' => false,'form_params'=>['op'=>'update','data'=>"{$serverData}"]]); echo $response->getBody()."
"; } } ?>