美文网首页
当微信服务器给我的URL发送多次同一请求,怎么办?

当微信服务器给我的URL发送多次同一请求,怎么办?

作者: 亻火子 | 来源:发表于2020-05-28 09:18 被阅读0次

    首先说一下我的应用场景。
    目的是借助微信压缩视频,当用户给公众号发送视频后,服务器下载并保存视频,这个处理过程可以会超过5s。

    微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次,如果在调试中,发现用户无法收到响应的消息,可以检查是否消息处理超时。
    关于重试的消息排重,有msgid的消息推荐使用msgid排重。事件类型消息推荐使用FromUserName + CreateTime 排重。
    ------------摘自微信公众平台开发者

    所以我的服务器会收到微信服务器发来的重复请求,视频也重复下载。

    简单的解决办法
    收到消息,检测msgid是否在Redis中,不存在把msgid存入Redis同时下载视频,存在不处理。

    //msgid未写入
    if (!$this->redis()->get('msgid_' . $msgid)) {
      $this->redis()->setex('msgid_' . $msgid, 15, $msgid);
      $this->downVideo($openid);//下载视频
    }
    
    private function redis()
      {
        $redis = new \Redis();
        $redis->connect('127.0.0.1, '6379');
        $redis->auth('yourpassword');
        $redis->select(6);
        return $redis;
      }
    

    相关文章

      网友评论

          本文标题:当微信服务器给我的URL发送多次同一请求,怎么办?

          本文链接:https://www.haomeiwen.com/subject/rdcgahtx.html