#symfony #phpmqtt
Вопрос:
Я использую 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();
}
Но довольно странно, что он работает несколько раз, а затем останавливает только один метод набора. Я удалил некоторый код для простоты, например, для выбора устройства, потому что он явно всегда получает его, чтобы обновить подключенное время.
Итак, почему только эта колонка? И почему это работает несколько раз, а затем останавливается?
Если вы можете указать мне, где отлаживать, я был бы рад попытаться решить сам.
Ответ №1:
Это не «настоящий» ответ, но я подумал, что опубликую свой обходной путь на случай, если у кого-то еще возникнут проблемы.
Я создал команду Symfony, используя компонент процесса. На сервере есть исполняемый файл, который возвращает таблицу маршрутизации всех подключенных серверов MQTT. Я запрашиваю его, затем скрипт обновляет строку в базе данных. Я не думаю, что это идеально, но это решает проблему.