PHP dan MQTT: Petua untuk membina sistem teragih berdasarkan penghantaran mesej
Pengenalan:
Dengan perkembangan pesat Internet dan Internet of Things, permintaan untuk sistem teragih semakin meningkat. Membina sistem pengedaran yang cekap dan boleh dipercayai adalah tugas yang kompleks. Artikel ini akan memperkenalkan cara menggunakan protokol PHP dan MQTT untuk membina sistem teragih berdasarkan penghantaran mesej, memberikan pembaca beberapa petua dan contoh kod.
Bahagian 1: Pengenalan kepada protokol MQTT
MQTT (Mesej Queue Telemetry Transport) ialah protokol penghantaran mesej terbitan/langganan yang ringan Ia pada asalnya direka untuk menghantar data sensor, tetapi dengan perkembangan Internet of Things, ia telah meluas digunakan dalam sistem teragih. MQTT mempunyai ciri kependaman rendah, penggunaan lebar jalur yang rendah, kesederhanaan dan fleksibiliti, dan sangat sesuai untuk digunakan dalam persekitaran dengan sambungan rangkaian yang tidak stabil.
Bahagian Kedua: Penyepaduan PHP dan MQTT
PHP ialah bahasa skrip sebelah pelayan yang digunakan secara meluas dengan perpustakaan pengaturcaraan rangkaian yang kaya dan perpustakaan klien MQTT yang boleh berinteraksi dengan pelayan MQTT. Di bawah ialah contoh kod PHP mudah untuk menyambung ke pelayan MQTT, menerbitkan mesej dan melanggan mesej.
<?php require("phpMQTT.php"); $mqtt = new phpMQTT("mqtt.example.com", 1883, "ClientID"); if ($mqtt->connect()) { $mqtt->publish("topic", "Hello MQTT"); $mqtt->subscribe("topic"); while ($mqtt->proc()) {} $mqtt->close(); } else { echo "Failed to connect."; } ?>
Dalam kod di atas, anda perlu memperkenalkan fail phpMQTT.php, yang mengandungi perpustakaan klien MQTT. Kemudian nyatakan objek phpMQTT menggunakan alamat pelayan MQTT, port dan ID klien yang ditentukan. Sambung ke pelayan MQTT dengan memanggil kaedah connect() Jika sambungan berjaya, anda boleh menggunakan kaedah publish() untuk menerbitkan mesej dan kaedah subscribe() untuk melanggan mesej. Kemudian gunakan kaedah proc() untuk memastikan kod berjalan sehingga mesej yang dilanggan diterima. Akhir sekali, putuskan sambungan daripada pelayan MQTT dengan memanggil kaedah close().
Bahagian 3: Contoh Praktikal Sistem Teragih
Pertimbangkan senario berikut: Kami mempunyai sistem teragih yang terdiri daripada berbilang penderia dan pelayan pusat. Penderia boleh mengumpul data dalam masa nyata dan menerbitkan data ke pelayan pusat melalui protokol MQTT.
Berikut ialah contoh kod PHP mudah untuk pengumpulan dan penerbitan data di bahagian sensor:
<?php require("phpMQTT.php"); $mqtt = new phpMQTT("mqtt.example.com", 1883, "SensorID"); if ($mqtt->connect()) { while (true) { $data = getValueFromSensor(); // 从传感器获取数据 $mqtt->publish("sensor_data", json_encode($data)); sleep(1); } $mqtt->close(); } else { echo "Failed to connect."; } function getValueFromSensor() { // 获取传感器数据的逻辑 return $data; } ?>
Dalam kod di atas, mula-mula nyatakan objek phpMQTT dan sambungkan ke pelayan MQTT. Kemudian data penderia dikumpul secara berterusan melalui gelung dan data diterbitkan kepada topik bernama "sensor_data" melalui kaedah publish(). Ambil perhatian bahawa kaedah json_encode() digunakan untuk menukar data ke dalam format JSON. Tetapkan selang pengumpulan data dengan memanggil kaedah sleep(). Akhir sekali, sambungan ke pelayan MQTT diputuskan melalui kaedah close().
Di bahagian pelayan tengah, contoh kod yang serupa boleh digunakan untuk melanggan data penderia dan memprosesnya:
<?php require("phpMQTT.php"); $mqtt = new phpMQTT("mqtt.example.com", 1883, "ServerID"); if ($mqtt->connect()) { $mqtt->subscribe("sensor_data"); while ($mqtt->proc()) { $msg = $mqtt->getMessage(); $data = json_decode($msg->payload, true); processData($data); // 处理传感器数据的逻辑 } $mqtt->close(); } else { echo "Failed to connect."; } function processData($data) { // 处理传感器数据的逻辑 } ?>
Dalam kod di atas, langgan topik "sensor_data" dengan memanggil kaedah subscribe(). Kemudian kaedah proc() dipanggil secara berterusan melalui gelung untuk menerima mesej langganan untuk data sensor. Apabila memproses mesej, anda boleh menggunakan kaedah getMessage() untuk mendapatkan kandungan mesej dan menggunakan kaedah json_decode() untuk menghuraikan data ke dalam format tatasusunan, dan kemudian memproses data seperti yang diperlukan.
Kesimpulan:
Dengan menggunakan protokol PHP dan MQTT, kami boleh membina sistem teragih berdasarkan penghantaran mesej dengan mudah. Artikel ini memperkenalkan ciri-ciri protokol MQTT dan cara menggunakan PHP dan MQTT untuk menyepadukan dan mengamalkan kod contoh sistem teragih. Saya harap artikel ini dapat memberikan sedikit rujukan dan bantuan untuk pembaca semasa membina sistem teragih.
Atas ialah kandungan terperinci PHP dan MQTT: Petua untuk membina sistem teragih berdasarkan pemesejan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!