0

PHP を使用して MQTT プロトコル経由で IBM Bluemix に接続し、IoT Foundation からのメッセージをサブスクライブしたいと考えています。私はこのコードを使用します:

<?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";
}

?>

しかし、ブラウザには次のメッセージが表示されます。

致命的なエラー: 167 行目の /Library/WebServer/Documents/phpMQTT/phpMQTT.php で最大実行時間が 30 秒を超えました

4

2 に答える 2

1

subscribe は無限の外観を持つため、Web ブラウザーで実行することを意図しておらず、コマンド ラインから実行するのが最適です。

subscribe メソッドを使用してメッセージを受信して​​いる場合は、永続的なメッセージを確認し、メッセージの受信時にループから抜け出すことができます。

このリポジトリhttps://github.com/vvaswani/bluemix-iotf-device-trackerのファイル web-app.php に、Web ブラウザーで phpMQTT を使用する方法の例があります。

于 2016-04-20T19:27:17.650 に答える