Rumah  >  Artikel  >  pembangunan bahagian belakang  >  PHP dan MQTT: Bina sistem penjadualan tugas berdasarkan baris gilir mesej

PHP dan MQTT: Bina sistem penjadualan tugas berdasarkan baris gilir mesej

WBOY
WBOYasal
2023-07-08 17:33:15739semak imbas

PHP dan MQTT: Membina sistem penjadualan tugas berdasarkan baris gilir mesej

Dalam era Internet hari ini, dengan perkembangan pesat aplikasi Internet, semakin banyak tugas perlu dilaksanakan secara tidak segerak untuk meningkatkan pengalaman pengguna dan prestasi sistem. Kaedah pelaksanaan segerak tradisional selalunya tidak lagi terpakai Pada masa ini, baris gilir mesej adalah pilihan yang sangat baik. MQTT ialah protokol penghantaran mesej ringan Ia mempunyai kelebihan penggunaan tenaga yang rendah, penggunaan lebar jalur yang rendah, dan menyokong sambungan yang panjang, menjadikannya pilihan yang ideal untuk membina sistem penjadualan tugas berdasarkan baris gilir mesej.

Artikel ini akan memperkenalkan cara menggunakan PHP dan protokol MQTT untuk membina sistem penjadualan tugas berdasarkan baris gilir mesej. Kami akan menggunakan perpustakaan sambungan MQTT PHP mosquitto dan paho-mqtt untuk melaksanakan fungsi yang berkaitan. Sistem ini terdiri daripada dua komponen teras: pengeluar tugas dan pengguna tugas.

1. Pengeluar tugas

Pengeluar tugas bertanggungjawab untuk menjana tugas dan menerbitkannya ke baris gilir mesej. Dalam PHP, kita boleh menggunakan perpustakaan sambungan nyamuk untuk melaksanakan fungsi pengeluar tugas. Berikut ialah kod sampel:

<?php
$mqtt = new MosquittoClient();
$mqtt->onConnect('connect');
$mqtt->connect('localhost', 1883, 60);

function connect($mqtt, $rc) {
    global $argv;

    $task = $argv[1]; // 从脚本参数中获取任务
    $topic = 'task_queue'; // 定义消息队列的主题

    $mqtt->publish($topic, $task, 0, false);
}

$mqtt->loopForever();
?>

Dalam contoh ini, kami mula-mula mencipta objek MosquittoClient dan menyambung ke pelayan MQTT dengan memanggil kaedah sambungan. Kemudian, selepas sambungan berjaya, kami mendapat tugas untuk diterbitkan daripada parameter skrip, dan kemudian memanggil kaedah penerbitan untuk menerbitkan tugasan ke baris gilir mesej.

2. Pengguna Tugas

Pengguna tugas bertanggungjawab untuk mendapatkan tugas daripada baris gilir mesej dan memproses tugasan. Dalam PHP, kita boleh menggunakan perpustakaan sambungan paho-mqtt untuk melaksanakan fungsi pengguna tugas. Berikut ialah contoh kod:

<?php
require("phpMQTT.php");

$mqtt = new phpMQTT("localhost", 1883, "client_id");

if ($mqtt->connect(true, NULL, "username", "password")) {
    $topics = array('task_queue' => array('qos' => 0, 'function' => 'consumeTask'));
    $mqtt->subscribe($topics, 0);

    while ($mqtt->proc()) {
    }
} else {
    echo "MQTT连接失败";
}

function consumeTask($topic, $message) {
    // 在这里处理任务
    echo "接收到任务:" . $message . "
";

    // 处理完成后,发送任务完成的通知
    sendMessage("task_completed", $message);
}

function sendMessage($topic, $message) {
    global $mqtt;

    $mqtt->publish($topic, $message, 0, false);
}
?>

Dalam contoh ini, kami mula-mula memperkenalkan kelas phpMQTT, mencipta objek phpMQTT, dan kemudian memanggil kaedah sambung untuk menyambung ke pelayan MQTT. Selepas sambungan berjaya, kami melanggan topik baris gilir mesej dengan memanggil kaedah langgan dan mentakrifkan fungsi pemprosesan tugas consumeTask.

Selepas menerima tugas, fungsi consumeTask boleh melakukan logik pemprosesan yang sepadan di dalamnya Selepas pemprosesan selesai, kami juga boleh menghantar pemberitahuan selesai tugasan melalui fungsi sendMessage. Pada masa yang sama, anda juga boleh mengendalikan kegagalan tugas dalam fungsi consumeTask dan melaksanakan pengendalian ralat yang sepadan.

3. Ringkasan

Dengan menggunakan protokol PHP dan MQTT, kami boleh membina sistem penjadualan tugas dengan mudah berdasarkan baris gilir mesej. Pengeluar tugas bertanggungjawab untuk menjana tugas dan menerbitkannya ke baris gilir mesej, manakala pengguna tugas bertanggungjawab untuk mendapatkan tugas daripada baris gilir mesej dan memprosesnya. Seni bina sistem ini boleh meningkatkan kecekapan pemprosesan tugas dengan berkesan dan meningkatkan kebolehpercayaan dan kebolehskalaan sistem.

Di atas adalah pengenalan ringkas untuk membina sistem penjadualan tugas berdasarkan baris gilir mesej Dengan menggunakan nyamuk perpustakaan sambungan MQTT PHP dan paho-mqtt, kami boleh melaksanakan fungsi yang sepadan dengan mudah. Saya harap artikel ini dapat membantu semua orang memahami dan menggunakan teknologi baris gilir mesej.

Atas ialah kandungan terperinci PHP dan MQTT: Bina sistem penjadualan tugas berdasarkan baris gilir mesej. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn