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.
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
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.
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
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!