返回功能不起作用

时间:2017-05-09 08:17:21

标签: php function return phpmqtt

我使用phpMQTT订阅来自MQTT代理的数据。我已根据其基本实现成功设置了pub / sub例程。我可以在procmsg()函数中回显信息。

但是,我需要获取我收到的数据并将其用于运行一些数据库操作等。我似乎无法访问procmsg()函数之外收到的主题或消息。使用如下返回似乎什么都不产生。

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

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

显然我做错了什么 - 但是如何获取值以便我可以在procmsg()之外使用它们?非常感谢。

1 个答案:

答案 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);
}

对不起我的英文,希望这有帮助!

相关问题