Возврат в функцию не работает

Я подписываюсь на данные брокера MQTT с phpMQTT. Я успешно настроил подпрограмму pub / sub на основе их базовой реализации. Я могу точно отобразить информацию внутри функции procmsg ().

Однако мне нужно взять полученные данные и использовать их для выполнения нескольких операций с базой данных и тому подобного. Я не могу получить доступ к теме или сообщения, полученные за пределами функции procmsg (). Использование return, как показано ниже, ничего не дает.

<?php
function procmsg($topic, $msg){
$value = $msg * 10;
return $value;
}

echo procmsg($topic, $msg);
echo $value;
?>

Очевидно, что я делаю что-то не так — но как мне получить значения, чтобы я мог использовать их вне procmsg ()? Большое спасибо.

0

Решение

Я не знаю об этой библиотеке, но в этом коде
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);
}

Извините за мой английский, надеюсь, это поможет!

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]