Return 功能不工作

Return in function not working

我正在使用 phpMQTT 从 MQTT 代理订阅数据。我已经基于它们的基本实现成功地设置了一个 pub/sub 例程。我可以在 procmsg() 函数中很好地回显信息。

但是,我需要获取接收到的数据并将其用于 运行 一些数据库操作等。我似乎无法访问主题或在 procmsg() 函数之外收到的消息。如下使用 return 似乎没有任何结果。

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

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

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

我不知道那个库,但是在那个代码中 https://github.com/bluerhinos/phpMQTT/blob/master/phpMQTT.php , 可能看看它是如何工作的。

在 :

$topics['edafdff398fb22847a2f98a15ca3186e/#'] = array("qos"=>0, "function"=>"procmsg");

您告诉它主题 "edafdff398fb22847a2f98a15ca3186e/#" 的服务质量 (qos) = 0,并且 "event" 称为 'procmsg'。 这就是你后来写这个的原因

function procmsg($topic,$msg){ ... }

所以在 while($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);
}

抱歉我的英语不好,希望对您有所帮助!