php关于连接mqtt有两种代码方式:
1.用phpmqtt类 不需要扩展支持,直接就可以,不懂得小伙伴可以百度。
2.就是安装mosquitto扩展,我第一次用的是第一类不过感觉不是很稳定,于是换了这种方式,感觉比之前好了很多
安装mosquitto
# 下载源代码包
wget http://mosquitto.org/files/source/mosquitto-1.4.14.tar.gz
# 解压
tar zxfv mosquitto-1.4.14.tar.gz
# 进入目录
cd mosquitto-1.4.14
# 编译 安装
make & make install
过程有入坑的小伙伴,百度一下吧我就不贴了
安装php扩展
pecl install Mosquitto-alpha
从配置好的php.index中找到php.ini,在里面添加下面语句
添加地方大概在938行处
extension=mosquitto.so
重启服务
Build process completed successfully
Installing '/usr/lib/php5/20090626/mosquitto.so'
install ok: channel://pecl.php.net/Mosquitto-0.3.0
configuration option "php_ini" is not set to php.ini location
You should add "extension=mosquitto.so" to php.ini
[email protected]:~# /etc/init.d/apache2 restart
扩展就安装成功了,接下来就是发布和订阅了:
发布:
$client = new Mosquitto\Client();
$client->connect("mqtt服务器ip", 1883, 5);
$client->loop();
$client->publish(‘“主题”’, ‘消息’, 1, 0);
$client->disconnect();//断开链接
订阅:
$client = new Mosquitto\Client();
$client->connect("mqtt服务器ip", 1883, 5);
$client->subscribe('订阅主题', 1);
$client->onMessage('message');
$nowtime = time();
while(true){
$client->loop();
global $payload;
if(!empty($payload)){
echo $payload; //订阅到的消息
break;
}
if($nowtime==(time()-2)){
break;
}
}
$client->unsubscribe('主题');//取消订阅
$client->disconnect();//断开链接
unset($client);
function message($message) {
printf("Got a message ID %d on topic %s with payload:\n%s\n\n", $message->mid, $message->topic, $message->payload);
}
就写这些,希望大家工作顺利!