Fonction de notification en temps réel de diffusion de messages et d'abonnement de Swoole et Workerman en PHP et MySQL
Résumé :
Avec le développement rapide d'Internet, la fonction de notification en temps réel est également devenue un élément indispensable des applications modernes. En PHP et MySQL, nous pouvons utiliser Swoole et Workerman, deux excellentes bibliothèques d'extensions, pour implémenter la diffusion de messages et l'abonnement afin d'obtenir des fonctions de notification en temps réel. Cet article présentera en détail les scénarios d'application de Swoole et Workerman en PHP et MySQL, et donnera des exemples de code spécifiques pour aider les lecteurs à comprendre et à pratiquer la fonction de notification en temps réel.
<?php $server = new SwooleWebSocketServer("0.0.0.0", 9501); $server->on('open', function (SwooleWebSocketServer $server, $request) { echo "new connection open: {$request->fd} "; }); $server->on('message', function (SwooleWebSocketServer $server, $frame) { $message = $frame->data; // 实现消息广播 foreach($server->connections as $fd) { $server->push($fd, $message); } }); $server->on('close', function ($ser, $fd) { echo "connection close: {$fd} "; }); $server->start();
on('message')
pour implémenter la fonction de diffusion de messages. Lorsqu'une nouvelle connexion est établie, l'ID de connexion sera imprimé ; lorsqu'un message est reçu, toutes les connexions seront traversées et un message sera envoyé à chaque connexion. on('message')
监听事件,实现了消息广播的功能。当有新的连接建立时,会打印连接的ID;当接收到消息时,将遍历所有连接,并发送消息给每个连接。<?php require_once './Workerman/Autoloader.php'; use WorkermanLibTimer; use WorkermanWorker; $worker = new Worker("websocket://0.0.0.0:2345"); $worker->onWorkerStart = function () { Timer::add(1, function () { // 实现消息广播 foreach (Worker::$worker[0]->connections as $connection) { $connection->send('Hello'); } }); }; $worker->onConnect = function ($connection) { echo "New connection "; }; $worker->onMessage = function ($connection, $data) { echo "Receiving message: {$data} "; }; $worker->onClose = function ($connection) { echo "Connection closed "; }; Worker::runAll();
在上面的示例中,我们创建了一个Workerman WebSocket服务器,并通过Timer::add()
方法实现了定时发送消息的功能,实现消息广播。当有新的连接建立时,会打印相关信息;当接收到消息时,会打印消息内容;当连接关闭时,会打印相应信息。
CREATE TABLE `messages` ( `id` int(11) NOT NULL AUTO_INCREMENT, `content` varchar(255) NOT NULL, PRIMARY KEY (`id`) ); CREATE TRIGGER `new_message` AFTER INSERT ON `messages` FOR EACH ROW BEGIN DECLARE message VARCHAR(255); SET message = CONCAT('New message: ', NEW.content); -- 发送实时通知 INSERT INTO `notifications` (`message`) VALUES (message); END;
通过以上的触发器定义,当有新的消息插入到messages
表中时,会自动触发触发器中的代码,将消息信息插入到notifications
表中。然后在Swoole或Workerman的服务器中,实现定时查询notifications
Implémentation de la fonction de notification en temps réel de Workerman
Timer::add()
, implémentez message diffusé. Lorsqu'une nouvelle connexion est établie, les informations pertinentes seront imprimées ; lorsqu'un message est reçu, le contenu du message sera imprimé lorsque la connexion est fermée, les informations correspondantes seront imprimées ; messages
, le code dans le déclencheur sera automatiquement déclenché et les informations du message seront insérées dans les notifications code> tableau. Ensuite dans le serveur Swoole ou Workerman, implémentez la fonction d'interrogation régulière de la table <code>notifications
, et lorsqu'il y a une nouvelle notification, envoyez-la au client correspondant. 🎜🎜🎜Résumé🎜Cet article présente comment Swoole et Workerman implémentent la fonction de notification en temps réel dans PHP et MySQL, détaillant les scénarios d'application et des exemples de code spécifiques de chaque bibliothèque. En utilisant ces deux excellentes bibliothèques d'extensions, nous pouvons facilement implémenter des fonctions de notification en temps réel et améliorer l'expérience utilisateur de l'application. Les lecteurs peuvent choisir des bibliothèques et des méthodes appropriées en fonction de leurs propres besoins pour bénéficier de puissantes fonctions de notification en temps réel. 🎜🎜
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!