zhangdjxx
V2EX  ›  问与答

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

  •  
  •   zhangdjxx · Dec 9, 2015 · 2856 views
    This topic created in 3824 days ago, the information mentioned may be changed or developed.

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

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

    比如你可以自己的业务逻辑判断,使该动作只能完成一次。
    或者你判断本次请求的消息是不是已经处理过的,那么就要知道消息的唯一标识是什么。
    msgid 、 FromUserName + CreateTime 就是消息的唯一标识。
    zhangdjxx
        2
    zhangdjxx  
    OP
       Dec 9, 2015
    @paicha 求 php 做法,我是放在 sae 上的。。。现在确实有积分加 2 次的情况。。
    paicha
        3
    paicha  
    PRO
       Dec 9, 2015
    @zhangdjxx 跟编程语言无关,跟你的业务逻辑有关。
    aliuwr
        4
    aliuwr  
       Dec 9, 2015   ❤️ 1
    美丽说的员工就这个能耐?
    zhangdjxx
        5
    zhangdjxx  
    OP
       Dec 10, 2015 via iPhone
    @aliuwr 产品..业余学学开发..
    aliuwr
        6
    aliuwr  
       Dec 10, 2015
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2774 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 10:05 · PVG 18:05 · LAX 03:05 · JFK 06:05
    ♥ Do have faith in what you're doing.