Penyegerakan berbilang peranti dan push mesej fungsi sembang masa nyata PHP
Pengenalan:
Dalam era rangkaian sosial dan pemesejan segera, fungsi sembang masa nyata telah menjadi salah satu keperluan asas banyak aplikasi web dan aplikasi mudah alih. Apabila membangunkan fungsi sembang masa nyata, kita bukan sahaja perlu melaksanakan fungsi menghantar dan menerima mesej serta-merta, tetapi juga perlu mempertimbangkan isu penyegerakan berbilang peranti dan tolakan mesej. Artikel ini akan memperkenalkan cara menggunakan PHP untuk melaksanakan fungsi sembang masa nyata dan menyelesaikan keperluan penyegerakan berbilang peranti dan tolak mesej.
1. Persediaan persekitaran
Sebelum memulakan pembangunan, kita perlu menyediakan persekitaran berikut:
2. Proses pelaksanaan
Sambung ke pangkalan data: Gunakan PHP untuk menyambung ke pangkalan data dan buat jadual mesej untuk menyimpan rekod sembang.
$db = new mysqli('localhost', 'username', 'password', 'database'); $db->query("CREATE TABLE IF NOT EXISTS messages (id INT AUTO_INCREMENT PRIMARY KEY, sender VARCHAR(50), receiver VARCHAR(50), content TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)");
Pengendalian mesej baharu: Simpan mesej baharu ke pangkalan data melalui permintaan POST.
if ($_SERVER['REQUEST_METHOD'] == 'POST') { $sender = $_POST['sender']; $receiver = $_POST['receiver']; $content = $_POST['content']; $db->query("INSERT INTO messages (sender, receiver, content) VALUES ('$sender', '$receiver', '$content')"); echo 'Success'; }
Pertanyaan rekod sembang: Dapatkan rekod sembang antara dua pengguna melalui permintaan GET.
if ($_SERVER['REQUEST_METHOD'] == 'GET') { $sender = $_GET['sender']; $receiver = $_GET['receiver']; $result = $db->query("SELECT * FROM messages WHERE (sender = '$sender' AND receiver = '$receiver') OR (sender = '$receiver' AND receiver = '$sender')"); $messages = []; while ($row = $result->fetch_assoc()) { $messages[] = $row; } echo json_encode($messages); }
Tekan mesej masa nyata: Gunakan sambungan panjang dan tugas tak segerak untuk menolak mesej baharu kepada semua pengguna dalam talian dalam masa nyata.
$server = new swoole_websocket_server('0.0.0.0', 9501); $server->on('open', function ($server, $request) { echo "New connection: {$request->fd} "; }); $server->on('message', function ($server, $frame) { $message = json_decode($frame->data, true); // 保存到数据库 $sender = $message['sender']; $receiver = $message['receiver']; $content = $message['content']; $db->query("INSERT INTO messages (sender, receiver, content) VALUES ('$sender', '$receiver', '$content')"); // 推送给所有在线用户 $result = $db->query("SELECT fd FROM online_users"); while ($row = $result->fetch_assoc()) { $server->push($row['fd'], $frame->data); } }); $server->on('close', function ($server, $fd) { echo "Connection closed: {$fd} "; }); $server->start();
3. Prinsip pelaksanaan penyegerakan berbilang peranti masa nyata dan tolak mesej
Kesimpulan:
PHP melaksanakan penyegerakan berbilang peranti dan tolakan mesej fungsi sembang masa nyata adalah tugas pembangunan yang biasa. Prestasi sistem dan pengalaman pengguna boleh dipertingkatkan melalui pemilihan teknologi yang betul dan pemprosesan tak segerak. Contoh kod di atas memberikan idea pelaksanaan yang mudah, dan pembangun boleh menambah baik dan mengembangkannya mengikut keperluan sebenar. Semoga artikel ini bermanfaat kepada anda.
Atas ialah kandungan terperinci Penyegerakan berbilang peranti dan tolakan mesej fungsi sembang masa nyata PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!