💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
参考文档: https://www.cloudmqtt.com/docs-php.html github下载 : https://github.com/bluerhinos/phpMQTT CloudMQTT 概述: https://www.cloudmqtt.com/docs.html CloudMQTT 除了有php的类库,还有python,java.net等mqtt的类库。 ### 一、phpMQTT详解 客户端发布: ~~~ //publish.php require("phpMQTT.php"); $host = "hostname"; //主机 $port = port; //端口 $username = "username"; //如果没有则为空 $password = "password"; //如果没有则为空 $message = "Hello CloudMQTT!"; //要发送的消息 //phpMQTT 有四个参数:主机,端口,客户端id,证书。官网这里的案例没写证书,请参考phpMQTT类 //没有证书的时候只能连接1883端口,不能连接8883端口。 $mqtt = new phpMQTT($host, $port, "ClientID".rand()); //连接 if ($mqtt->connect(true,NULL,$username,$password)) { $mqtt->publish("topic",$message, 0); $mqtt->close(); //关闭 }else{ echo "Fail or time out<br />"; } ~~~ ##### 服务端订阅 ~~~ // 注意:订阅请用窗口或者后台去运行,不要再页面运行。 require("phpMQTT.php"); ignore_user_abort(true); // 后台运行 set_time_limit(0); // 取消脚本运行时间的超时上限 date_default_timezone_set('PRC'); //设置中国时区 $host = "hostname"; $port = port; $username = "username"; $password = "password"; //同样这里少了证书参数 $mqtt = new phpMQTT($host, $port, "ClientID".rand()); if(!$mqtt->connect(true,NULL,$username,$password)){ exit(1); } //currently subscribed topics $topics['topic'] = array("qos"=>0, "function"=>"procmsg"); $mqtt->subscribe($topics,0); while($mqtt->proc()){ //无限去请求 } $mqtt->close(); function procmsg($topic,$msg){//输出消息 echo "Msg Recieved: $msg"; } ~~~ **二、内存耗死问题** 场景:(订阅)链接不上mqtt的时候,一下代码会出错: 文件名: phpMQTT.php  ![](https://img2018.cnblogs.com/blog/1103071/201812/1103071-20181213141456778-1168419955.png) 错误分析:链接不到mqtt的时候,$this->socket这个结果为false,while里面的一直会循环,$string的大小会耗死内存。所以加一个判断,按如下代码修改。 ~~~ if ($this->socket) { while (!feof($this->socket) && $togo>0) { $fread = fread($this->socket, $togo); $string .= $fread; $togo = $int - strlen($string); } } ~~~ 搞定