Rumah > pembangunan bahagian belakang > tutorial php > Cara menggunakan perkhidmatan mikro PHP untuk melaksanakan penjadualan tugas teragih dan penghantaran

Cara menggunakan perkhidmatan mikro PHP untuk melaksanakan penjadualan tugas teragih dan penghantaran

WBOY
Lepaskan: 2023-09-25 09:54:01
asal
1364 orang telah melayarinya

Cara menggunakan perkhidmatan mikro PHP untuk melaksanakan penjadualan tugas teragih dan penghantaran

Cara menggunakan perkhidmatan mikro PHP untuk melaksanakan penjadualan tugas teragih dan penghantaran

Ikhtisar:
Dengan perkembangan pesat Internet, cara menjadualkan dan menghantar tugas dengan cekap telah menjadi isu penting yang dihadapi oleh banyak perusahaan dan pembangun. Aplikasi yang menggunakan seni bina perkhidmatan mikro lebih mampu mengendalikan penjadualan dan penghantaran tugasan teragih. Artikel ini akan memperkenalkan cara menggunakan PHP untuk melaksanakan seni bina perkhidmatan mikro untuk penjadualan dan penghantaran tugas teragih, serta menyediakan contoh kod khusus.

  1. Pasang dan konfigurasikan RabbitMQ
    RabbitMQ ialah sistem baris gilir mesej yang berkuasa yang membolehkan aplikasi yang diedarkan untuk melaksanakan penghantaran tak segerak dan pemprosesan mesej dengan mudah. Pertama, kita perlu memasang RabbitMQ dan mengkonfigurasi kebenaran pengguna dan hos maya yang diperlukan.
  2. Buat penjadual tugas dan pelaksana tugas
    Dalam seni bina perkhidmatan mikro kami, kami akan mencipta dua aplikasi PHP yang berbeza, satu bertanggungjawab untuk penjadualan tugas, iaitu, penjadual tugas, dan satu lagi bertanggungjawab untuk pelaksanaan tugas tertentu, iaitu Pelaksana tugas.

Contoh kod untuk penjadual tugas:

<?php
require_once __DIR__ . '/vendor/autoload.php';

use PhpAmqpLibConnectionAMQPStreamConnection;
use PhpAmqpLibMessageAMQPMessage;

// 连接到RabbitMQ主机
$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
$channel = $connection->channel();

// 定义任务队列
$channel->queue_declare('task_queue', false, true, false, false);

// 从命令行参数中获取任务参数
$data = implode(' ', array_slice($argv, 1));
if(empty($data)) {
    $data = "Hello World!";
}

// 创建消息对象
$msg = new AMQPMessage($data, ['delivery_mode' => AMQPMessage::DELIVERY_MODE_PERSISTENT]);

// 发送消息到任务队列
$channel->basic_publish($msg, '', 'task_queue');

echo " [x] Sent '$data'
";

$channel->close();
$connection->close();
Salin selepas log masuk

Contoh kod untuk pelaksana tugas:

<?php
require_once __DIR__ . '/vendor/autoload.php';

use PhpAmqpLibConnectionAMQPStreamConnection;
use PhpAmqpLibMessageAMQPMessage;

// 连接到RabbitMQ主机
$connection = new AMQPStreamConnection('localhost', 5672, 'guest', 'guest');
$channel = $connection->channel();

// 定义任务队列
$channel->queue_declare('task_queue', false, true, false, false);

echo " [*] Waiting for messages. To exit press CTRL+C
";

// 回调函数,用于处理任务消息
$callback = function ($msg) {
    echo " [x] Received ", $msg->body, "
";

    // 模拟任务执行过程
    sleep(substr_count($msg->body, '.'));

    echo " [x] Done
";

    // 显式确认任务消息已完成
    $msg->delivery_info['channel']->basic_ack($msg->delivery_info['delivery_tag']);
};

// 每次只接受一个任务消息
$channel->basic_qos(null, 1, null);
$channel->basic_consume('task_queue', '', false, false, false, false, $callback);

while (count($channel->callbacks)) {
    $channel->wait();
}

$channel->close();
$connection->close();
Salin selepas log masuk
  1. Mulakan dan menguji penjadual tugas dan pelaksana tugas
    Mulakan penjadual tugas dan pelaksana tugas masing-masing dalam baris arahan, anda boleh Gunakan terminal yang berbeza . Contohnya, laksanakan dalam tetingkap terminal penjadual tugas:
$ php scheduler.php First task
Salin selepas log masuk

Lakukan dalam tetingkap terminal pelaksana tugas:

$ php worker.php
Salin selepas log masuk

Kedua-dua aplikasi akan berkomunikasi antara satu sama lain dan menyelesaikan proses penjadualan dan penghantaran tugas.

Kesimpulan:
Artikel ini memperkenalkan cara menggunakan perkhidmatan mikro PHP untuk melaksanakan penjadualan dan penghantaran tugas teragih. Dengan menggunakan sistem baris gilir mesej RabbitMQ, kami boleh melaksanakan pemprosesan tak segerak bagi tugas dengan mudah dan penjadualan tugas yang berasingan dan pelaksanaan tugas, meningkatkan kebolehskalaan dan kebolehselenggaraan sistem. Semoga artikel ini bermanfaat kepada anda.

Atas ialah kandungan terperinci Cara menggunakan perkhidmatan mikro PHP untuk melaksanakan penjadualan tugas teragih dan penghantaran. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan