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
Libérer: 2023-06-21 17:51:39
original
2871 Les gens l'ont consulté

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
Copier après la connexion

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
Copier après la connexion
  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,       // 监听端口
    ],
Copier après la connexion
.

Modifier Pour le contenu suivant :

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

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));
    }
}
Copier après la connexion

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)
    {
        // 处理逻辑
    }
}
Copier après la connexion

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
Copier après la connexion
  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
Copier après la connexion

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

php think worker:client
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal