我使用phpMQTT订阅来自MQTT代理的数据。我已根据其基本实现成功设置了pub / sub例程。我可以在procmsg()函数中回显信息。
但是,我需要获取我收到的数据并将其用于运行一些数据库操作等。我似乎无法访问procmsg()函数之外收到的主题或消息。使用如下返回似乎什么都不产生。
<?php
function procmsg($topic, $msg){
$value = $msg * 10;
return $value;
}
echo procmsg($topic, $msg);
echo $value;
?>
显然我做错了什么 - 但是如何获取值以便我可以在procmsg()之外使用它们?非常感谢。
答案 0 :(得分:1)
我不知道那个lib,但在那个代码中 https://github.com/bluerhinos/phpMQTT/blob/master/phpMQTT.php, 可能会看到它是如何运作的。
in:
$topics['edafdff398fb22847a2f98a15ca3186e/#'] = array("qos"=>0, "function"=>"procmsg");
你告诉它主题“edafdff398fb22847a2f98a15ca3186e /#”将具有服务质量(qos)= 0,以及称为“procmsg”的“事件”。 这就是你后来写这个
的原因function procmsg($topic,$msg){ ... }
所以在while($ mqtt-&gt; 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);
}
对不起我的英文,希望这有帮助!