关于mqtt组件的publish的一些问题,或者说,想请教下思路

<?php
require __DIR__ . '/../vendor/autoload.php';
use Workerman\Worker;
$worker = new Worker();
$worker->onWorkerStart = function(){
$mqtt = new Workerman\Mqtt\Client('mqtt://test.mosquitto.org:1883');
$mqtt->onConnect = function($mqtt) {
$mqtt->publish('test', 'hello workerman mqtt');
};
$mqtt->connect();
};
Worker::runAll();
如示例中:每次publish主题时,都要new Client 。是不是意味着我每次对同一主题发布消息,都会创建一个连接/子进程,最后爆满。
 
目前的业务是有很多设备,需要上传自身状态,服务器也可以下发指令。目前订阅有通配符,创建很少的客户端,再解析就能实现更新设备属性。但是下发指令因为上面这个顾虑卡住了。对进程这方面不是很懂。想问下有影响吗。如果有影响,有没有其他方式处理?
 
 
 
已邀请:

damao - phper

赞同来自: pidong

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px 'Helvetica Neue'}
span.s1 {font: 12.0px '.PingFang SC'}
<?php
require __DIR__ . '/../vendor/autoload.php';
use Workerman\Worker;
$worker = new Worker();
$worker->onWorkerStart = function(){
    global $mqtt;
    $mqtt = new Workerman\Mqtt\Client('mqtt://test.mosquitto.org:1883');
    $mqtt->onConnect = function($mqtt) {
       $mqtt->publish('test', 'hello workerman mqtt');
    };
    $mqtt->connect();
};
$worker->onMessage = function($con, $msg){
    global $mqtt;
    $mqtt->publish(.....);
};
Worker::runAll();
 
没测试过,不过感觉这样就可以

damao - phper

赞同来自:

不用每次创建一个啊,创建一个然后保存起来,下次再复用就行。

pidong

赞同来自:

http://doc.workerman.net/faq/push-in-other-project.html
看来我文档还是没看仔细,这里有相关解答

dmjlovehj - 90后IT男

赞同来自:

您解决没有呀,,给我说说呀,我也是这样的情况 也不知道 怎么弄了 ,

要回复问题请先登录注册