我在php脚本中通过发起一个post请求,去调用微信的客服接口,通过这个接口向指定的微信号,发送消息。
在我的脚本中通过sleep(30)延时发起请求,结果微信不能收到消息。sleep(10)的时候可以收到,我想请问这是php执行超时造成的,还是微信服务器的原因?sleep(10);
 $this->ihttp_post($id,"请在30秒内回复");

解决方案 »

  1.   

    不明白为什么要用 sleep 函数,做边界测试吗?
      

  2.   


    是这样的,每个微信号要在指定的时间内发言,超过了这个时间没有发言,就要通知下一个人发言,所以当公众号通知第一个人发言之后,必须知道第一个人有没有按时发言,我想到的办法就是在通知第一个人后sleep指定的时间,然后去判断第一个人有没有发言。
      

  3.   

    只要是使用 http 协议通讯,那么程序只服务于当前 http 会话。
    也就是说是否有发言不可能在当前 http 会话中检测到sleep 只是挂起当前运行程序若干秒,但通讯的另一方仍在继续运行
    如果通讯是有时限的话,那么你就白白的浪费了程序暂停的时间。 sleep(10) 就使得原来 30 秒有效期变成了 20 秒
      

  4.   

    我打算在通知第一个人之前发起一个异步请求,在另一个脚本中执行sleep,但是这一步一直有问题。
      

  5.   

    你的任何打算,都是要遵守 http 通讯协议的
    任何超越 http 协议范围的做法都是不能成功的