zoukankan      html  css  js  c++  java
  • 跨服务器异步传输

    #最近项目中要求跨服务器同步数据,想到两种解决办法
    #方法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);
        }
    }
    

      

  • 相关阅读:
    C语言点滴
    随便记点什么
    STL的使用
    Linux下OTG支持USB摄像头
    socket编程实战-调试
    socket编程实战-bind端口占用问题
    socket编程实战-tcp_tw_recycle问题
    socket编程实战-connect超时问题
    BT[3]-BLE广播详解
    BT[2]-BLE初体验:心率计
  • 原文地址:https://www.cnblogs.com/zc123/p/5887991.html
Copyright © 2011-2022 走看看