1

我正在使用php-mqtt,它工作得很好。以下订阅没有问题。它对 MQTT 有一个“永远循环”,并且它应该永远运行。随着设备的连接,setMqttLastConnectedAt()始终有效。但是,setMqttConnectedServer()仅适用于前几个连接,然后停止更新。我以为是参数,所以我尝试对 IP 进行硬编码

$client->subscribe('/brokers/clients/#', function ($topic, $message) use ($io) {
    //        $message=json_decode($message);
                $device->setMqttConnectedServer('10.11.0.6');
//                $device->setMqttConnectedServer($this->params->get('mqttip'));
                $device->setMqttLastConnectedAt(new \DateTime());
                $this->em->persist($device);
                $this->em->flush();
            }

但是,它工作了好几次,然后就停止了那一套方法,这很奇怪。为简单起见,我删除了一些代码,例如设备的选择,因为它显然总是得到它,以便更新连接时间。

那么,为什么只有这一列?为什么它工作了几次,然后停止?

如果你能指出我在哪里调试,我很乐意尝试解决自己。

4

1 回答 1

0

这不是“真正”的答案,但我想我会发布我的解决方法,以防其他人遇到问题。

我使用流程组件制作了一个 Symfony 命令。服务器有一个可执行文件,它返回所有附加的 MQTT 服务器的路由表。我查询它,然后脚本更新数据库中的行。我不认为它是理想的,但它解决了这个问题。

于 2021-07-14T07:15:54.440 回答