Rumah >pembangunan bahagian belakang >tutorial php >Bagaimanakah PHP terus mendengar langganan mesej Redis dan menolaknya ke bahagian hadapan?

Bagaimanakah PHP terus mendengar langganan mesej Redis dan menolaknya ke bahagian hadapan?

王林
王林asal
2023-09-05 17:42:29821semak imbas

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:

  1. Pasang sambungan Redis dan PHP:
    Mula-mula anda perlu memasang Redis dan pastikan sambungan PHP Redis telah dipasang pada pelayan. Sambungan Redis dan Redis boleh dipasang melalui arahan berikut:
sudo apt-get install redis-server
sudo apt-get install php-redis
  1. Buat skrip PHP untuk langganan mesej Redis:
    Buat skrip PHP untuk mendengar langganan mesej Redis Contoh kod adalah seperti berikut:
<?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.

  1. Buat halaman hadapan:
    Buat halaman hadapan untuk memaparkan mesej yang diterima Contoh kod adalah seperti berikut:
<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.

  1. Benamkan halaman hadapan ke dalam skrip PHP:
    Benamkan halaman hujung hadapan ke dalam skrip PHP Contoh kod adalah seperti berikut:
<?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.

  1. Jalankan skrip:
    Simpan skrip PHP di atas sebagai subscribe.php dan halaman hadapan sebagai index.html, kemudian jalankan arahan berikut dalam terminal:
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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn