V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
zhangdjxx
V2EX  ›  问与答

怎么用 php 对微信事件消息进行排重啊。。

  •  
  •   zhangdjxx · 2015-12-09 19:28:37 +08:00 · 2355 次点击
    这是一个创建于 3297 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    6 条回复    2015-12-10 07:31:40 +08:00
    paicha
        1
    paicha  
       2015-12-09 20:04:38 +08:00
    比如关注送积分操作。
    后台第一次超时的话,微信会重新发起请求。这时候你的后台就收到两次关注完成的请求了。
    当然你不想处理第二次新请求,不然就给用户送两次积分了,那么你的接口要能正确处理重复的请求。

    比如你可以自己的业务逻辑判断,使该动作只能完成一次。
    或者你判断本次请求的消息是不是已经处理过的,那么就要知道消息的唯一标识是什么。
    msgid 、 FromUserName + CreateTime 就是消息的唯一标识。
    zhangdjxx
        2
    zhangdjxx  
    OP
       2015-12-09 20:06:46 +08:00
    @paicha 求 php 做法,我是放在 sae 上的。。。现在确实有积分加 2 次的情况。。
    paicha
        3
    paicha  
       2015-12-09 20:23:06 +08:00
    @zhangdjxx 跟编程语言无关,跟你的业务逻辑有关。
    aliuwr
        4
    aliuwr  
       2015-12-09 21:30:52 +08:00   ❤️ 1
    美丽说的员工就这个能耐?
    zhangdjxx
        5
    zhangdjxx  
    OP
       2015-12-10 01:33:53 +08:00 via iPhone
    @aliuwr 产品..业余学学开发..
    aliuwr
        6
    aliuwr  
       2015-12-10 07:31:40 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3402 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 11:12 · PVG 19:12 · LAX 03:12 · JFK 06:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.