Maison  >  Article  >  développement back-end  >  Comment PHP écoute-t-il en permanence les abonnements aux messages Redis et les tâches de file d'attente de traitement ?

Comment PHP écoute-t-il en permanence les abonnements aux messages Redis et les tâches de file d'attente de traitement ?

PHPz
PHPzoriginal
2023-09-05 13:21:271104parcourir

Comment PHP écoute-t-il en permanence les abonnements aux messages Redis et les tâches de file dattente de traitement ?

Comment PHP écoute-t-il en permanence les abonnements aux messages Redis et traite-t-il les tâches de file d'attente ?

Dans le développement Web réel, nous rencontrons souvent des situations dans lesquelles nous devons traiter des tâches de file d'attente, et Redis est un système de stockage clé-valeur hautes performances couramment utilisé. Il fournit le mode Pub/Sub, ce qui le rend très pratique pour nous de publier et de publier. abonnez-vous aux messages. Dans cet article, nous expliquerons comment utiliser PHP pour écouter en continu les abonnements aux messages Redis et traiter les tâches de file d'attente.

Tout d'abord, nous devons nous assurer que l'extension Redis et l'outil de gestion des packages Composer sont installés. Exécutez la commande suivante dans le terminal pour installer l'extension Redis et Composer :

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

Ensuite, nous devons créer un fichier composer.json dans le répertoire du projet et ajouter les dépendances suivantes :

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

Ensuite, exécutez la commande suivante pour installer le dépendances :

composer install

Ensuite, nous devons créer un fichier pub.php pour publier un message dans la file d'attente Redis :

<?php

require 'vendor/autoload.php';

use PredisClient;

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

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

Nous pouvons enregistrer le code ci-dessus dans le fichier pub.php et exécuter php pub.php dans le terminal pour publier un message dans la file d'attente Redis.

Ensuite, nous devons créer un fichier sub.php pour écouter la file d'attente Redis et gérer les tâches de la file d'attente :

<?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 . "
";

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

Nous pouvons enregistrer le code ci-dessus dans le fichier sub.php et exécuter php sub.php dans le terminal pour continuer Écoutez la file d'attente Redis.

Pour faciliter la démonstration, nous pouvons envoyer plusieurs messages à la file d'attente Redis en boucle dans la méthode de publication dans le fichier pub.php :

<?php

require 'vendor/autoload.php';

use PredisClient;

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

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

Ensuite, exécutez php sub.php dans le terminal pour surveiller en permanence la file d'attente Redis, et exécutez php pub.php dans une autre fenêtre de terminal pour publier plusieurs messages dans la file d'attente Redis.

Grâce aux étapes ci-dessus, nous pouvons utiliser PHP pour surveiller en permanence les abonnements aux messages Redis et traiter les tâches de file d'attente. Dans les applications réelles, nous pouvons étendre et optimiser la logique de traitement des tâches de file d'attente en fonction des besoins pour répondre aux différents besoins de l'entreprise. J'espère que cet article vous sera utile !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn