Возврат в функцию не работает
Я подписываюсь на данные брокера MQTT с phpMQTT. Я успешно настроил подпрограмму pub / sub на основе их базовой реализации. Я могу точно отобразить информацию внутри функции procmsg().
Однако мне нужно взять полученные данные и использовать их для выполнения нескольких операций с базой данных и тому подобного. Я не могу получить доступ к теме или сообщения, полученные за пределами функции procmsg(). Использование return как показано ниже ничего не дает.
<?php
function procmsg($topic, $msg){
$value = $msg * 10;
return $value;
}
echo procmsg($topic, $msg);
echo $value;
?>
Очевидно, что я делаю что-то не так - но как мне получить значения, чтобы я мог использовать их вне procmsg()? Большое спасибо.
1 ответ
Я не знаю об этой библиотеке, но в этом коде 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);
}
Извините за мой английский, надеюсь, это поможет!