从 MQTT 代理获取消息会阻止页面工作


Getting a message from MQTT broker stops page from working

我在 PHP 中使用一个简单的 MQTT 客户端 - https://github.com/sskaje/mqtt - 并希望从代理中只检索一条消息(保留 - 始终存在),然后将其显示在页面上。一切正常,但我无法让它显示整个页面。它显示"测试文本 1",然后是调试代码,然后是我的消息,然后停止在那里,不显示"测试文本 2"或"测试文本 3"。如果有人能帮助我,我将非常感激,因为我根本不知道什么不起作用,并且花了很多时间研究它。谢谢!

Test Text 1
<?php
require('spMQTT.class.php');
$mqtt = new spMQTT('tcp://127.0.0.1:1883/');
spMQTTDebug::Enable();
$mqtt->setKeepalive(5);
$connected = $mqtt->connect();
if (!$connected) {
    die("Not connected'n");
}

$topics['#'] = 0;
$mqtt->subscribe($topics);
$mqtt->loop('default_subscribe_callback');
$mqtt->unsubscribe(array_keys($topics));

printf("Test Text 2"); 
/**
 * @param spMQTT $mqtt
 * @param string $topic
 * @param string $message
 */
function default_subscribe_callback($mqtt, $topic, $message) {
    printf("Message received: Topic=%s, Message=%s'n", $topic, $message);
    break;
}
?>
Test Text 3

我不熟悉那个 mqtt 库,但它看起来非常像对loop()的调用是阻塞的,所以你将不得不以不同的方式处理这个问题。