首页 > 代码库 > 跨服务器异步传输
跨服务器异步传输
#最近项目中要求跨服务器同步数据,想到两种解决办法
#方法1 http请求
#通过curl 将数据同步到另外系统,但http不确定因素太多丢失部分数据且没办法做记录
#方法2 异步队列
#在发送端做定时推送,数据存储到redis中,redis将存储的数据分发到接收接口
/** * 定时推送套装至company系统 * @author :981596276@qq.com */public function pushSuits(){ (php_sapi_name() == ‘cli‘) or die(‘Please run under the cli‘); $this->load->model(‘suits_model‘); $this->load->helper(‘log‘); $this->load->library(‘RedisDriver‘, ‘redisdriver‘); while (true) { $this->redisdriver->connect(); $device_last_push_id = $this->redisdriver->getStr(‘device_last_push_id‘); $device_last_push_id = is_null($device_last_push_id) ? ‘2846‘ : $device_last_push_id; // 旧数据不推送 // 完成的套装 $suits = $this->suits_model->pushSuitsById($device_last_push_id, 0, 200); $datas = array(); foreach ($suits as $row) { // 料号不为空 if (!empty($row[‘pn‘])) { $datas[] = $row[‘pn‘] . ‘|‘ . $row[‘code‘]; } } // 有数据时 if (!empty($datas)) { $params = array( ‘suits‘ => implode(‘,‘, $datas), ); // 压入异步http队列 $this->redisdriver->pushList(‘queue_device_inventory‘, $params); log_info(‘queue_device_inventory‘, json_encode($params)); // 保存最后操作id $this->redisdriver->setStr(‘device_last_push_id‘, $suits[count($suits)-1][‘id‘]); log_info(‘device_last_push_id‘, $suits[count($suits)-1][‘id‘]); } sleep(1800); }}
跨服务器异步传输
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。