Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah PHP sentiasa mendengar langganan mesej Redis dan memproses tugas baris gilir?

Bagaimanakah PHP sentiasa mendengar langganan mesej Redis dan memproses tugas baris gilir?

PHPz
PHPzasal
2023-09-05 13:21:271104semak imbas

Bagaimanakah PHP sentiasa mendengar langganan mesej Redis dan memproses tugas baris gilir?

Bagaimanakah PHP sentiasa mendengar langganan mesej Redis dan memproses tugas baris gilir?

Dalam pembangunan web sebenar, kami sering menghadapi situasi di mana kami perlu memproses tugas baris gilir, dan Redis ialah sistem storan nilai kunci berprestasi tinggi yang biasa digunakan Ia menyediakan mod Pub/Sub, yang menjadikannya sangat mudah untuk kami menerbitkan dan melanggan mesej. Dalam artikel ini, kami akan memperkenalkan cara menggunakan PHP untuk terus mendengar langganan mesej Redis dan memproses tugas baris gilir.

Pertama, kita perlu memastikan bahawa sambungan Redis dan alat pengurusan pakej Komposer dipasang. Jalankan arahan berikut dalam terminal untuk memasang sambungan Redis dan Komposer:

pecl install redis
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer

Seterusnya, kita perlu mencipta fail composer.json dalam direktori projek dan menambah kebergantungan berikut:

{
    "require": {
        "predis/predis": "^1.1"
    }
}

Kemudian jalankan arahan berikut untuk memasang dependencies:

composer install

Seterusnya, kita perlu mencipta fail pub.php untuk menerbitkan mesej ke baris gilir Redis:

<?php

require 'vendor/autoload.php';

use PredisClient;

// 创建Redis客户端
$client = new Client();

// 发布消息到队列
$client->publish('queue', 'message');

Kita boleh menyimpan kod di atas ke dalam fail pub.php dan menjalankan php pub.php dalam terminal untuk menerbitkan mesej kepada dalam baris gilir Redis.

Kemudian, kita perlu mencipta fail sub.php untuk mendengar baris gilir Redis dan mengendalikan tugas baris gilir:

<?php

require 'vendor/autoload.php';

use PredisClient;

// 创建Redis客户端
$client = new Client();

// 监听队列
$client->pubSubLoop(function ($redis, $channel, $message) {
    // 处理队列任务
    if ($message->kind === 'message' && $channel === 'queue') {
        echo $message->payload . "
";

        // 在这里处理队列任务的逻辑
        // ...
    }
});

Kita boleh menyimpan kod di atas ke dalam fail sub.php dan menjalankan php sub.php dalam terminal untuk teruskan Dengar baris gilir Redis.

Untuk kemudahan demonstrasi, kami boleh menghantar berbilang mesej ke baris gilir Redis dalam satu gelung dalam kaedah terbitkan dalam fail pub.php:

<?php

require 'vendor/autoload.php';

use PredisClient;

// 创建Redis客户端
$client = new Client();

// 循环发送消息到队列
for ($i = 0; $i < 10; $i++) {
    // 发布消息到队列
    $client->publish('queue', 'message ' . $i);
}

Kemudian jalankan php sub.php di terminal untuk memantau gilir Redis secara berterusan, dan Jalankan php pub.php dalam tetingkap terminal lain untuk menerbitkan berbilang mesej ke baris gilir Redis.

Melalui langkah di atas, kami boleh menggunakan PHP untuk memantau langganan mesej Redis dan memproses tugas baris gilir secara berterusan. Dalam aplikasi sebenar, kami boleh mengembangkan dan mengoptimumkan logik pemprosesan tugas giliran mengikut keperluan untuk memenuhi keperluan perniagaan yang berbeza. Harap artikel ini membantu anda!

Atas ialah kandungan terperinci Bagaimanakah PHP sentiasa mendengar langganan mesej Redis dan memproses tugas baris gilir?. 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