Maison >cadre php >PensezPHP >Implémenter la file d'attente de messages à l'aide de ThinkPHP6

Implémenter la file d'attente de messages à l'aide de ThinkPHP6

PHPz
PHPzoriginal
2023-06-21 17:51:392893parcourir

Avec l'avènement d'Internet et de l'ère du big data, les files d'attente de messages sont devenues un élément indispensable du développement commercial et du traitement des données. Dans le domaine de PHP, le framework ThinkPHP a toujours été un choix populaire parmi les développeurs. Cet article explique comment utiliser ThinkPHP6 pour implémenter des files d'attente de messages et vous fournit quelques exemples de code pratiques.

  1. Installer l'extension de file d'attente de messages

Avant de commencer à créer la file d'attente de messages, nous devons installer une extension de file d'attente de messages (telle que RabbitMQ ou Beanstalkd). Cet article prend RabbitMQ comme exemple. Voici les étapes d'installation :

1.1 Installer Erlang

RabbitMQ est développé en langage Erlang, donc Erlang doit d'abord être installé.

1.2 Installer RabbitMQ

Avant d'installer RabbitMQ, vous devez installer les outils wget et gnupg. Exécutez les commandes suivantes dans le terminal :

sudo apt-get install wget gnupg -y

Ensuite, téléchargez et installez RabbitMQ :

wget -O - "https://packagecloud.io/rabbitmq/rabbitmq-server/gpgkey" | sudo apt-key add -
sudo tee /etc/apt/sources.list.d/bintray.rabbitmq.list <<EOF
deb https://dl.bintray.com/rabbitmq-erlang/debian buster erlang
deb https://dl.bintray.com/rabbitmq/debian buster main
EOF
sudo apt-get update -y
sudo apt-get install rabbitmq-server -y
  1. Créez des files d'attente et des consommateurs

Dans ThinkPHP6. , nous pouvons utiliser Worker (processus de travail) pour créer des files d'attente et des consommateurs. Voici les étapes spécifiques :

2.1 Activer le mode Worker

Dans le fichier app.php du répertoire de configuration, recherchez le segment de code suivant :

    'worker' => [
        'type'  => 'socket',   // 驱动方式
        'host'  => '0.0.0.0',  // 监听地址
        'port'  => 2345,       // 监听端口
    ],
.

Modifier Pour le contenu suivant :

    'worker' => [
        'type'      => 'rabbitmq',
        'host'      => 'localhost',
        'port'      => 5672,
        'user'      => 'guest',
        'password'  => 'guest',
        'vhost'     => '/',
        'exchange'  => 'test',  // 交换机名称
        'queue'     => 'test',  // 队列名称
    ],

Ici, le mode du pilote est changé en lapinmq, et les informations de configuration pertinentes de la connexion RabbitMQ (adresse locale, nom d'utilisateur, mot de passe, etc.) ainsi que le nom du commutateur et de la file d'attente sont spécifié.

2.2 Créer un producteur de messages

Créez un contrôleur nommé Task dans le répertoire de l'application. La méthode est nommée send Le code est le suivant :

namespace appcontroller;

use thinkworkerServer;

class Task extends Server
{
    public function send()
    {
        $data = ['name'=>'ThinkPHP','score'=>100];
        $this->worker->push(json_encode($data));
    }
}

Ici, le format Json est utilisé pour pousser les données vers la file d'attente des messages.

2.3 Créer un consommateur de messages

Créez un contrôleur nommé Worker dans le répertoire de l'application. La méthode est nommée onMessage Le code est le suivant :

namespace appcontroller;

use thinkworkerServer;

class Worker extends Server
{
    public function onMessage($connection, $data)
    {
        // 处理逻辑
    }
}

Dans la méthode onMessage, nous pouvons personnaliser la logique de traitement des messages reçus. Par exemple, les données peuvent être analysées et stockées dans une base de données, puis des messages texte ou des notifications par courrier électronique peuvent être envoyés aux utilisateurs.

  1. Exécuter le Worker

Après avoir terminé la configuration ci-dessus, il suffit d'exécuter la commande suivante dans le terminal pour démarrer le mode Worker :

php think worker:server
  1. Test de la file d'attente des messages

Lors du test de la file d'attente des messages, vous peut ouvrir deux terminaux.

Exécutez la commande suivante dans le premier terminal pour pousser le message dans la file d'attente :

curl http://localhost:2345/task/send

Exécutez la commande suivante dans le deuxième terminal et observez le message reçu :

php think worker:client

Cet article explique comment implémenter une file d'attente de messages à l'aide de ThinkPHP6 . Il peut aider les développeurs à gérer plus rapidement le traitement des données à grande échelle, l'exécution de tâches asynchrones, etc., et à améliorer les performances et la stabilité des applications.

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