Symfony не обновляет столбец в командной строке ORM

#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. Я запрашиваю его, затем скрипт обновляет строку в базе данных. Я не думаю, что это идеально, но это решает проблему.