phpMQTT неблокирующая публикация & amp; Recieve

Я пишу программу, соединяющую веб-сервис на PHP с брокером MQTT. Брокер управляет москитом на Raspberry Pi.

Идея состоит в том, чтобы веб-служба отправила запрос (форма была отправлена), а затем отправила публикацию брокеру MQTT, а затем дождалась ответа.

Однако проблема в том, что цикл, по-видимому, приводит к фатальной ошибке PHP из-за того, что это бесконечный цикл.

Я попытался добавить функцию quitstop (), чтобы выйти из цикла после получения сообщения, но программа падает до того, как достигнет этой точки.

MQTT все еще очень нов для меня, но мне нужно отправить запрос, а затем держать цикл открытым, пока я не получу ответ, чтобы продолжить свою программу.

Это код для обработки формы отправки:

require("phpMQTT.php");

$server = "xxx.xxx.xxx.xx";              // change if necessary
$port = 1883;                       // change if necessary
$username = "username";             // set your username
$password = "password";             // set your password
$client_id = "phpMQTT-request-1234";     // make sure this is unique for connecting to sever - you could use uniqid()

$mqtt = new phpMQTT($server, $port, $client_id);

$msg = $_POST['box'];
if (!empty($msg)) {
if ($mqtt->connect(true, null, $username, $password)) {
$mqtt->publish("dev/test", $msg, 0);
$mqtt->close();
}
subscribeToTopic($mqtt);
}

function subscribeToTopic($mqtt)
{
$topics['dev/test'] = array("qos" => 0, "function" => "procmsg");
$mqtt->subscribe($topics, 0);
while ($mqtt->proc()) {

}
$mqtt->close();

}
function procmsg($topic, $msg)
{
global $mqtt;
echo $msg;
quitstop($mqtt);
}

function quitstop($mqtt)
{
$mqtt->close();
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …