Я хочу подключиться к IBM Bluemix через протокол MQTT, используя PHP для подписки на сообщения, поступающие из IoT Foundation. Я использую этот код:MQTT Подписываться с PHP на IBM Bluemix
<?php
require("../phpMQTT.php");
$config = array(
'org_id' => 't9m318',
'port' => '1883',
'app_id' => 'phpmqtt',
'iotf_api_key' => 'my api key',
'iotf_api_secret' => 'my api secret',
'device_id' => 'phpmqtt'
);
$config['server'] = $config['org_id'] .'.messaging.internetofthings.ibmcloud.com';
$config['client_id'] = 'a:' . $config['org_id'] . ':' .$config['app_id'];
$location = array();
// initialize client
$mqtt = new phpMQTT($config['server'], $config['port'], $config['client_id']);
$mqtt->debug = false;
// connect to broker
if(!$mqtt->connect(true, null, $config['iotf_api_key'], $config['iotf_api_secret'])){
echo 'ERROR: Could not connect to IoT cloud';
exit();
}
$topics['iot-2/type/+/id/phpmqtt/evt/+/fmt/json'] =
array("qos"=>0, "function"=>"procmsg");
$mqtt->subscribe($topics, 0);
// process messages
while ($mqtt->proc(true)) {
}
// disconnect
$mqtt->close();
function procmsg($topic, $msg) {
echo "Msg Recieved: $msg";
}
?>
Но браузер показывать это сообщение:
Fatal error: Maximum execution time of 30 seconds exceeded in /Library/WebServer/Documents/phpMQTT/phpMQTT.php on line 167
Я пытаюсь этот пример. Но иногда я не получаю значения. Я сохраняю флаг сохранения true для моего издателя, чтобы гарантировать, что брокер не удаляет значения, но все же он терпит неудачу. Любые подсказки, почему это происходит. Я разместил отдельную тему здесь http://stackoverflow.com/questions/42532305/php-mqtt-subscribe-not-consistent/ – Sid411