workerman mqtt插件问题

dmjlovehj
for ($a = 0 ;$a<500;$a++){
    echo  "a =  ".$a."||||";
    $mqtt->publish( "/1805705204f0468788/getGeneral",$a,);
    usleep(500000);
}

只能发送100个到mqtt服务器上,剩余400个虽然循环 还在执行,但是mqtt服务器就收不到了。不知道为什么求大神解答,mqtt服务器问题已经排除

阅读 1335
4个回答

dmjlovehj

不要沉贴呀,,性命攸关呀

six

workerman里不让用sleep吧

six

sleep会让进程睡眠,感觉会影响mqtt消息的确认吧。
试下这个

function publish($a) {
    $b = $a + 1;
    if ($b &gt;= 500) return;
    $mqtt-&gt;publish( &quot;/1805705204f0468788/getGeneral&quot;,$a,, function()use($b){
         Timer::add(0.5, 'publish', , false);
    });
}
publish(0);
  • dmjlovehj 2019-09-30

    你测试了?你们循环 500次么?大哥

  • dmjlovehj 2019-10-06

    还是不行

  • dmjlovehj 2019-10-06

    主要是 就不能发送500次到mqtt服务器上去,服务器接收不了超过100次

  • dmjlovehj 2019-10-06

    循环还是在循环,就是没有发送。

  • six 2019-10-06

    其它客户端试下,没准是服务端问题

  • dmjlovehj 2019-10-09

    其他的可以。我用的原生mqtt协议可以发送这么多

  • dmjlovehj 2019-10-09

    你试试 你能不能发送超过100条呀

lxy

抱歉来晚了,我用你的程序测试了一下能接收4百多个

[attach]2488[/attach]

[attach]2489[/attach]
 

  • dmjlovehj 2020-01-09

    这个,我也不知道 是什么问题了。可能我用的是windows 我用liunx试试