Я подписываюсь на данные брокера MQTT с phpMQTT. Я успешно настроил подпрограмму pub / sub на основе их базовой реализации. Я могу точно отобразить информацию внутри функции procmsg ().
Однако мне нужно взять полученные данные и использовать их для выполнения нескольких операций с базой данных и тому подобного. Я не могу получить доступ к теме или сообщения, полученные за пределами функции procmsg (). Использование return, как показано ниже, ничего не дает.
<?php
function procmsg($topic, $msg){
$value = $msg * 10;
return $value;
}
echo procmsg($topic, $msg);
echo $value;
?>
Очевидно, что я делаю что-то не так — но как мне получить значения, чтобы я мог использовать их вне procmsg ()? Большое спасибо.
Я не знаю об этой библиотеке, но в этом коде
https://github.com/bluerhinos/phpMQTT/blob/master/phpMQTT.php ,
можно увидеть, как работает.
в :
$topics['edafdff398fb22847a2f98a15ca3186e/#'] = array("qos"=>0, "function"=>"procmsg");
вы говорите, что тема «edafdff398fb22847a2f98a15ca3186e / #» будет иметь качество обслуживания (qos) = 0 и «событие» под названием procmsg.
Вот почему вы позже написали это
function procmsg($topic,$msg){ ... }
поэтому в то время как ($ mqtt-> proc ()) эта функция будет каждый раз проверять, есть ли новое сообщение (строка 332 вызывает функцию сообщения, а затем это вызывает procmsg из исходного кода)
вот почему вы не можете вызвать в своем коде procmsg
другими словами, возможно, внутри procmsg вы можете вызвать функции для обработки сообщения ej:
function procmsg($topic,$msg){
$value = $msg * 10;
doStuffWithDataAndDatabase($value);
}
Обратите внимание, что вы можете изменить имя функции просто ej:
$topics['edafdff398fb22847a2f98a15ca3186e/#'] = array("qos"=>0, "function"=>"onMessage");
а потом :
function onMessage($topic,$msg){
$value = $msg * 10;
doStuffWithDataAndDatabase($value);
}
Извините за мой английский, надеюсь, это поможет!
Других решений пока нет …