關於thinkphp使用mqtt
下面由thinkphp框架教學專欄為大家介紹thinkphp使用mqtt,希望對需要的朋友有幫助!
最近在做一個專案使用到mqtt,網路上看到很多例子都看的不太明白(大概因為我笨)不過後來還是處理好了,就在這裡記錄下以免忘記 因為不是很精通,看到有哪裡寫的錯誤的可以留言指點
首先準備工作就是 環境 以及框架,各位也可以用原生,差不太多
環境 我使用的是contOs7 安裝了mosquitto環境使用的mqtt 安裝教學在這裡(記得設定密碼,有關權限的還沒做,這篇文章就沒寫)
框架 我使用的是TP5.0的框架
接下裡就是開發流程
1 下載MQTT類別接著放到了專案根目錄下的extend資料夾,本來想放在csdn資源讓大家下賺個1積分辛苦費。沒想到預設就是5積分,懶得去Git而且分多的歡迎點擊資源地址 ,然後把Git地址給大家了 Git地址是:https://github.com/bluerhinos/phpMQTT,
2 然後引入MQtt類別
接下來是發佈和訂閱的程式碼區塊 關於MQTT資訊Qos等級,有興趣的可以去搜尋一下
<?php namespace app\index\model; use Bluerhinos\phpMQTT; use think\Model; class Mqtt extends Model { /** * MQTT发送信息 * @param $id 发布消息的ID 订阅ID需要与发布ID一致才能接受信息 topic为发布给全部 * @param $info 发布的信息 */ public function pus($id,$info){ //使用require_once 引入 MQTT 的类 require_once (EXTEND_PATH.'/phpMQTT-master/phpMQTT.php'); $host = ""; // change if necessary IP $port = 1883; // change if necessary 端口默认1883 $username = ""; // set your username 用户名 $password = ""; // set your password 密码 $message = $info; //要发送的消息 //phpMQTT有四个参数:主机,端口,客户端id,证书。官网这里的案例没写证书,请参考phpMQT类 //没有证书的时候只能连接1883端口,不能连接8883端口。 //第三个参数为客户端ID 不可重复 $mqtt = new phpMQTT($host, $port, "ClientID" . rand()); //连接 if ($mqtt->connect(true, NULL, $username, $password)) { //发送信息 第三个参数为Qos服务质量等级 //Qos0 发送者只发送一次消息,不进行重试,Broker不会返回确认消息。在Qos0情况下,Broker可能没有接受到消息 //Qos1 发送者最少发送一次消息,确保消息到达Broker,Broker需要返回确认消息PUBACK。在Qos1情况下,Broker可能接受到重复消息 //Qos2 Qos2使用两阶段确认来保证消息的不丢失和不重复。在Qos2情况下,Broker肯定会收到消息,且只收到一次 $mqtt->publish($id, $message, 0); $mqtt->close(); //关闭 } else { echo "Fail or time out<br />"; } } /** * 要使用命令行运行此方法!!! * think5.0 运行方法为 cd到Public 目录 然后 php index.php 模块/控制器/方法 * 该类主要为订阅,建议订阅代码和发布代码不要写在同一个类中,避免修改造成不必要的误改。 * 每次更新该类后需要重启mqtt订阅,否则新的改动不会生效。 * 请在相应的位置放入phpMQTT的库 * 库代码:https://github.com/bluerhinos/phpMQTT/blob/master/phpMQTT.php * 类库使用的时候注意命名空间,类名称命名要和thinkphp的保持一致,不然会报错 */ public function sub(){ require_once (EXTEND_PATH.'/phpMQTT-master/phpMQTT.php'); $server = ""; // change if necessary 服务器IP $port = 1883; // change if necessary 端口 一般是1883 $username = ""; // set your username mosquitto设置的用户名 $password = ""; // set your password mosquitto设置的密码 $client_id = "clientx9293670xxctr".rand(1213333123,123123333); //你的连接客户端id $mqtt = new phpMQTT($server, $port, $client_id); //进行连接 if(!$mqtt->connect(true, NULL, $username, $password)) { exit('error'); //连接失败 } else { echo "success"; //连接成功 } //topics["topic"] 为接受的主题名 需要和发送的主题名一致 否则会订阅不到 //订阅信息 Qos为信息登记,需要和发送的等级一致 $topics["topic"] = array("qos" => 0, "function" =>array($this,"onMessage")); $mqtt->subscribe($topics, 0); //死循环监听 while($mqtt->proc()){ } $mqtt->close(); } /** * 在此处接MQtt的信息 进行业务处理 * @param $topic * @param $msg */ function onMessage($topic,$msg){ $msg = json_decode($msg,true); //我把数据传递到了另一个方法进行处理 可以在处理完逻辑业务之后 再次调用发布方法 去给订阅方发布消息 $this->index($msg); } }
記得使用訂閱的時候一定要在命令列下執行,thinkphp執行範例先cd到專案的public目錄然後執行 #php index.php 模組/控制器/方法
執行後回傳sucess 如果要測試的話可以使用 mqtt.fx 軟體位址為 http://www.jensd.de/apps/mqttfx/ 我使用的是1.7.1 點進去後下面有個windows的連結點擊下載就行了,使用的話
##設定使用
開啟軟體,介面如下圖
然後選擇編輯連線
以上是關於thinkphp使用mqtt的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

執行 ThinkPHP 專案需要:安裝 Composer;使用 Composer 建立專案;進入專案目錄,執行 php bin/console serve;造訪 http://localhost:8000 查看歡迎頁面。

ThinkPHP 擁有多個版本,針對不同 PHP 版本而設計。主要版本包括 3.2、5.0、5.1 和 6.0,而次要版本用於修復 bug 和提供新功能。目前最新穩定版本為 ThinkPHP 6.0.16。在選擇版本時,需考慮 PHP 版本、功能需求和社群支援。建議使用最新穩定版本以獲得最佳性能和支援。

ThinkPHP Framework 的本機運作步驟:下載並解壓縮 ThinkPHP Framework 到本機目錄。建立虛擬主機(可選),指向 ThinkPHP 根目錄。配置資料庫連線參數。啟動 Web 伺服器。初始化 ThinkPHP 應用程式。存取 ThinkPHP 應用程式 URL 運行。

MQTT(MessageQueuingTelemetryTransport)是一種輕量級的訊息傳輸協議,通常用於物聯網設備之間的通訊。 PHP是一種常用的伺服器端程式語言,可以用來開發MQTT客戶端。本文將介紹如何使用PHP開發MQTT客戶端,並包含以下內容:MQTT協定的基本概念PHPMQTT客戶端程式庫的選取和使用實例:使用PHPMQTT客戶端發布和

Laravel 和 ThinkPHP 框架的效能比較:ThinkPHP 效能通常優於 Laravel,專注於最佳化和快取。 Laravel 性能良好,但對於複雜應用程序,ThinkPHP 可能更適合。

《開發建議:如何利用ThinkPHP框架實現非同步任務》隨著網路技術的快速發展,Web應用程式對於處理大量並發請求和複雜業務邏輯的需求也越來越高。為了提高系統的效能和使用者體驗,開發人員常常會考慮利用非同步任務來執行一些耗時操作,例如發送郵件、處理文件上傳、產生報表等。在PHP領域,ThinkPHP框架作為一個流行的開發框架,提供了一些便捷的方式來實現非同步任務。

ThinkPHP 安裝步驟:準備 PHP、Composer、MySQL 環境。使用 Composer 建立專案。安裝 ThinkPHP 框架及相依性。配置資料庫連線。產生應用程式碼。啟動應用程式並造訪 http://localhost:8000。

ThinkPHP 是一款高效能的 PHP 框架,具備快取機制、程式碼最佳化、平行處理和資料庫最佳化等優勢。官方性能測試顯示,它每秒可處理超過 10,000 個請求,實際應用中被廣泛用於京東商城、攜程網等大型網站和企業系統。
