Rumah  >  Artikel  >  pangkalan data  >  Melaksanakan sistem pemberitahuan pengguna masa nyata menggunakan PHP dan Redis: cara mengendalikan push mesej

Melaksanakan sistem pemberitahuan pengguna masa nyata menggunakan PHP dan Redis: cara mengendalikan push mesej

WBOY
WBOYasal
2023-07-30 17:02:09761semak imbas

Menggunakan PHP dan Redis untuk melaksanakan sistem pemberitahuan pengguna masa nyata: Cara mengendalikan push mesej

Pengenalan:
Dengan perkembangan Internet, pemberitahuan masa nyata telah menjadi salah satu ciri yang sangat diperlukan dalam aplikasi moden. Pemberitahuan masa nyata boleh menghantar maklumat penting kepada pengguna tepat pada masanya, meningkatkan pengalaman pengguna dan meningkatkan nilai aplikasi. Dalam artikel ini, kami akan memperkenalkan cara menggunakan PHP dan Redis untuk membina sistem pemberitahuan pengguna masa nyata yang mudah dan berkuasa.

Persediaan persekitaran:
Untuk melaksanakan fungsi pemberitahuan pengguna masa nyata, kami perlu memasang dan mengkonfigurasi persekitaran berikut terlebih dahulu:

  1. Persekitaran PHP (PHP 7 ke atas disyorkan)
  2. Perkhidmatan Redis

ialah pangkalan data dalam memori berprestasi tinggi , digunakan secara meluas untuk melaksanakan fungsi seperti caching, beratur, dan menerbitkan serta melanggan. Dalam artikel ini, kami akan menggunakan fungsi terbitkan dan langgan Redis untuk melaksanakan push mesej.

Langkah 1: Sambung ke Redis
Pertama, kita perlu menggunakan PHP untuk menyambung ke perkhidmatan Redis. Ini boleh dicapai menggunakan sambungan Predis PHP, iaitu perpustakaan klien Redis yang menyediakan API yang ringkas dan berkuasa. Anda boleh memasang pustaka Predis melalui composer: Predis扩展来实现,它是一个Redis客户端库,提供了简单而强大的API。可以通过composer安装Predis库:

composer require predis/predis

然后,在PHP脚本中使用以下代码连接Redis:

<?php
require 'vendor/autoload.php'; // 如果使用composer安装Predis库,需要引入autoload文件

$redis = new PredisClient([
    'scheme' => 'tcp',
    'host'   => '127.0.0.1',
    'port'   => 6379,
]);

// 测试连接是否成功
try {
    $redis->connect();
    echo "Redis连接成功!";
} catch (Exception $e) {
    echo "Redis连接失败:" . $e->getMessage();
}

确保在引入Predis库之前,你已经正确安装了composer并执行了composer install

步骤二:实现消息推送功能
接下来,我们将实现一个简单的示例来演示如何实现消息推送。我们将以一个简单的Web应用为例,用户在页面上提交消息后,消息将实时推送给所有在线用户。

首先,我们需要先编写一个用于发布消息到Redis频道的PHP脚本。创建一个名为publisher.php的文件,并将以下代码复制到文件中:

<?php
require 'vendor/autoload.php'; // 如果使用composer安装Predis库,需要引入autoload文件

$redis = new PredisClient([
    'scheme' => 'tcp',
    'host'   => '127.0.0.1',
    'port'   => 6379,
]);

$message = $_POST['message']; // 从表单中获取用户提交的消息

$redis->publish('notification', $message); // 发布消息到Redis频道

echo "消息发布成功!";

在上述代码中,我们首先通过$_POST超全局变量获取用户通过表单提交的消息,然后使用$redis->publish()方法将消息发布到名为notification的Redis频道。

然后,我们需要编写一个用于接收Redis频道消息并推送到所有在线用户的PHP脚本。创建一个名为subscriber.php的文件,并将以下代码复制到文件中:

<?php
require 'vendor/autoload.php'; // 如果使用composer安装Predis库,需要引入autoload文件

$redis = new PredisClient([
    'scheme' => 'tcp',
    'host'   => '127.0.0.1',
    'port'   => 6379,
]);

$redis->subscribe(['notification'], function ($redis, $channel, $message) {
    // 推送消息给所有在线用户
    // 你可以在这里编写自定义的推送逻辑,如使用WebSocket或长轮询等方式
    echo "收到新消息:" . $message . PHP_EOL;
});

// 注意:上述代码将阻塞进程,将一直监听Redis频道的消息,直到进程手动停止

在上述代码中,我们使用$redis->subscribe()方法订阅名为notification的Redis频道,并在回调函数中处理收到的消息。你可以根据自己的需求,在回调函数中编写自定义的推送逻辑,例如使用WebSocket或长轮询等方式推送消息给所有在线用户。

步骤三:运行示例
现在,我们已经完成了消息发布和订阅的代码。你可以在你的Web应用中创建一个表单,让用户提交消息并使用publisher.php脚本来发布消息。然后,使用subscriber.php脚本来接收Redis频道消息并推送给所有在线用户。

可以通过命令行来运行subscriber.php脚本,进入脚本所在的目录并执行以下命令:

php subscriber.php

然后,打开你的Web应用,填写表单并提交消息。你将会在命令行中看到如下输出:

收到新消息:用户提交的消息内容

这说明消息已成功发布到Redis频道并被subscriber.phprrreee

Kemudian, gunakan kod berikut dalam skrip PHP untuk menyambung ke Redis:

rrreee
Pastikan untuk memperkenalkan Predis, anda telah memasang composer dan melaksanakan composer install dengan betul.

🎜Langkah 2: Laksanakan fungsi tolak mesej🎜Seterusnya, kami akan melaksanakan contoh mudah untuk menunjukkan cara melaksanakan push mesej. Kami akan mengambil aplikasi web mudah sebagai contoh Selepas pengguna menghantar mesej pada halaman, mesej akan ditolak kepada semua pengguna dalam talian dalam masa nyata. 🎜🎜Pertama, kita perlu menulis skrip PHP untuk menerbitkan mesej ke saluran Redis. Cipta fail bernama publisher.php dan salin kod berikut ke dalam fail: 🎜rrreee🎜Dalam kod di atas, kita mula-mula mendapatkannya melalui $_POST pembolehubah superglobal Pengguna menyerahkan mesej melalui borang, dan kemudian menggunakan kaedah $redis->publish() untuk menerbitkan mesej ke saluran Redis bernama notification. 🎜🎜Kemudian, kita perlu menulis skrip PHP yang menerima mesej saluran Redis dan menolaknya kepada semua pengguna dalam talian. Cipta fail bernama subscriber.php dan salin kod berikut ke dalam fail: 🎜rrreee🎜Dalam kod di atas, kami menggunakan $redis->subscribe()Kaedahnya melanggan saluran Redis bernama notification dan memproses mesej yang diterima dalam fungsi panggil balik. Anda boleh menulis logik tolak tersuai dalam fungsi panggil balik mengikut keperluan anda sendiri, seperti menggunakan WebSocket atau tinjauan panjang untuk menolak mesej kepada semua pengguna dalam talian. 🎜🎜Langkah 3: Jalankan contoh🎜Sekarang, kami telah melengkapkan kod untuk penerbitan dan langganan mesej. Anda boleh membuat borang dalam aplikasi web anda yang membenarkan pengguna menghantar mesej dan menggunakan skrip publisher.php untuk menerbitkan mesej. Kemudian, gunakan skrip subscriber.php untuk menerima mesej saluran Redis dan menolaknya kepada semua pengguna dalam talian. 🎜🎜Anda boleh menjalankan skrip subscriber.php melalui baris arahan, masukkan direktori tempat skrip itu berada dan laksanakan arahan berikut: 🎜rrreee🎜Kemudian, buka aplikasi web anda, isi borang dan hantar mesej. Anda akan melihat output berikut pada baris arahan: 🎜rrreee🎜Ini menunjukkan bahawa mesej telah berjaya diposkan ke saluran Redis dan diterima oleh skrip subscriber.php. 🎜🎜Ringkasan: 🎜Dengan menggunakan PHP dan Redis untuk membina sistem pemberitahuan pengguna masa nyata, kami boleh melaksanakan fungsi tolak masa nyata mesej dengan mudah. Gunakan fungsi terbitkan dan langgan Redis untuk mengendalikan sejumlah besar tugas tolak mesej dengan cepat dan cekap. Dalam aplikasi praktikal, anda boleh menyesuaikan logik tolak mengikut keperluan anda, seperti menggunakan teknologi seperti WebSocket atau tinjauan panjang untuk menjalankan komunikasi dua hala masa nyata dengan pengguna. Semoga contoh yang dibentangkan dalam artikel ini akan membantu anda membina sistem pemberitahuan pengguna masa nyata yang lebih baik. 🎜

Atas ialah kandungan terperinci Melaksanakan sistem pemberitahuan pengguna masa nyata menggunakan PHP dan Redis: cara mengendalikan push mesej. 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