我使用phpMQTT订阅来自MQTT代理的数据。我已经根据它们的基本实现成功地建立了一个pub /子例程。我可以在procmsg()函数中很好地回显这些信息。
但是,我需要获取接收到的数据,并使用它来运行一些数据库操作等等。我似乎无法访问在procmsg()函数之外接收到的主题或msg。如下所示使用返回似乎没有任何效果。
<?php
function procmsg($topic, $msg){
$value = $msg * 10;
return $value;
}
echo procmsg($topic, $msg);
echo $value;
?>显然,我做错了什么--但是我如何获得值,以便我可以在procmsg()之外使用它们?非常感谢。
发布于 2017-05-09 09:03:49
我不知道这个库,但是在那个代码https://github.com/bluerhinos/phpMQTT/blob/master/phpMQTT.php中,它可能是如何工作的。
在以下方面:
$topics['edafdff398fb22847a2f98a15ca3186e/#'] = array("qos"=>0, "function"=>"procmsg");您告诉它的是,主题"edafdff398fb22847a2f98a15ca3186e/#“将具有服务质量(qos) = 0,并有一个称为'procmsg‘的”事件“。这就是你后来写这个的原因
function procmsg($topic,$msg){ ... }因此,在while($mqtt->proc())中,该函数每次都会检查是否有新消息(第332行调用消息函数,然后调用源代码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);
}对不起,我的英语,希望这个帮助!
https://stackoverflow.com/questions/43864598
复制相似问题