Rumah > Artikel > pembangunan bahagian belakang > Bagaimanakah PHP terus mendengar langganan mesej Redis dan menolaknya ke bahagian hadapan?
Bagaimanakah PHP terus mendengar langganan mesej Redis dan menolaknya ke bahagian hadapan?
Ikhtisar:
Dalam banyak aplikasi web, mesej tolak masa nyata adalah keperluan biasa. Apabila kami perlu menghantar mesej ke bahagian hadapan dalam masa nyata, kami sering menggunakan tinjauan pendapat atau tinjauan panjang untuk mendapatkan data terkini. Walau bagaimanapun, kaedah ini menggunakan banyak sumber pelayan, dan kelajuan tindak balas tidak cukup masa nyata. Menggunakan mekanisme baris gilir mesej Redis boleh menyelesaikan masalah ini dengan baik. Artikel ini akan memperkenalkan cara menggunakan PHP untuk terus memantau langganan mesej Redis dan menolak mesej ke bahagian hadapan dalam masa nyata.
Langkah pelaksanaan:
sudo apt-get install redis-server sudo apt-get install php-redis
<?php $redis = new Redis(); $redis->connect('localhost', 6379); $redis->subscribe(['channel_name'], function ($redis, $channel, $message) { // 将消息推送到前端 echo "<script>console.log('New message:', " . $message . ");</script>"; ob_flush(); flush(); }); $redis->close(); ?>
Dalam kod ini, mula-mula sambung ke pelayan Redis tempatan melalui kaedah sambung Redis, dan gunakan kaedah langgan untuk melanggan saluran yang ditentukan (channel_name). Apabila mesej tiba, fungsi panggil balik akan menolak mesej ke hujung hadapan.
<html> <head> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> </head> <body> <div id="message-holder"></div> <script> function showMessage(message) { $('#message-holder').append('<p>' + message + '</p>'); } </script> </body> </html>
Dalam kod ini, kami menggunakan perpustakaan jQuery untuk mengendalikan DOM, dengan mentakrifkan. fungsi showMessage, Paparkan mesej yang diterima pada halaman.
<?php $redis = new Redis(); $redis->connect('localhost', 6379); $redis->subscribe(['channel_name'], function ($redis, $channel, $message) { //将消息推送到前端 echo "<script>window.parent.showMessage('" . $message . "');</script>"; ob_flush(); flush(); }); $redis->close(); ?>
Bahagian utama kod ini ialah penyataan gema fungsi showMessage, mesej dihantar ke Halaman hujung hadapan dipaparkan.
php subscribe.php
Sekarang, apabila mesej baharu tiba, skrip PHP akan menolak mesej ke halaman hujung hadapan untuk paparan dalam masa nyata.
Ringkasan:
Melalui langkah di atas, kami boleh menggunakan PHP untuk terus memantau langganan mesej Redis dan menolak mesej ke halaman hadapan dalam masa nyata. Dengan cara ini, fungsi menolak mesej dalam masa nyata dapat direalisasikan, dan masalah pembaziran sumber pelayan dan kelajuan tindak balas masa nyata yang tidak mencukupi yang disebabkan oleh menggunakan kaedah pengundian atau pengundian yang panjang dapat dielakkan. Di samping itu, kod boleh dioptimumkan dan dikembangkan mengikut keperluan sebenar untuk meningkatkan prestasi dan kestabilan sistem.
Atas ialah kandungan terperinci Bagaimanakah PHP terus mendengar langganan mesej Redis dan menolaknya ke bahagian hadapan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!