Siaran mesej dan langganan fungsi pemberitahuan masa nyata Swoole dan Workerman dalam PHP dan MySQL
Abstrak:
Dengan perkembangan pesat Internet, fungsi pemberitahuan masa nyata juga telah menjadi bahagian yang amat diperlukan dalam aplikasi moden. Dalam PHP dan MySQL, kami boleh menggunakan Swoole dan Workerman, dua perpustakaan sambungan yang sangat baik, untuk melaksanakan penyiaran dan langganan mesej untuk mencapai fungsi pemberitahuan masa nyata. Artikel ini akan memperkenalkan senario aplikasi Swoole dan Workerman dalam PHP dan MySQL secara terperinci, dan memberikan contoh kod khusus untuk membantu pembaca memahami dan mengamalkan fungsi pemberitahuan masa nyata.
<?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();
Dalam contoh di atas, kami mencipta pelayan Swoole WebSocket dan mendengar acara melalui on('message')
untuk melaksanakan fungsi penyiaran mesej. Apabila sambungan baharu diwujudkan, ID sambungan akan dicetak apabila mesej diterima, semua sambungan akan dilalui dan mesej akan dihantar ke setiap sambungan. 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
Timer::add()
, laksanakan siaran mesej. Apabila sambungan baru diwujudkan, maklumat yang berkaitan akan dicetak apabila mesej diterima, kandungan mesej akan dicetak apabila sambungan ditutup, maklumat yang sepadan akan dicetak; pemberitahuan
dan apabila terdapat pemberitahuan baharu, hantarkannya kepada klien yang sepadan. 🎜🎜🎜Ringkasan🎜Artikel ini memperkenalkan cara Swoole dan Workerman melaksanakan fungsi pemberitahuan masa nyata dalam PHP dan MySQL, memperincikan senario aplikasi dan contoh kod khusus setiap perpustakaan. Dengan menggunakan dua perpustakaan sambungan yang sangat baik ini, kami boleh melaksanakan fungsi pemberitahuan masa nyata dengan mudah dan meningkatkan pengalaman pengguna aplikasi. Pembaca boleh memilih perpustakaan dan kaedah yang sesuai mengikut keperluan mereka sendiri untuk mencapai fungsi pemberitahuan masa nyata yang berkuasa. 🎜🎜Atas ialah kandungan terperinci Fungsi pemberitahuan masa nyata penyiaran dan langganan Swoole dan Workerman dalam PHP dan MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!