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

首先说一下我的应用场景。
目的是借助微信压缩视频,当用户给公众号发送视频后,服务器下载并保存视频,这个处理过程可以会超过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发送多次同一请求,怎么办?)