Aplikasi teknologi baris gilir dalam penyahduplikasian mesej dan mati pucuk mesej dalam PHP dan MySQL
Abstrak: Dengan pembangunan berterusan aplikasi Internet, baris gilir mesej telah menjadi salah satu alat penting untuk mengendalikan operasi serentak tinggi dan tak segerak. Dalam PHP dan MySQL, bagaimana untuk menggunakan baris gilir untuk menyelesaikan masalah deduplikasi mesej dan mati pucuk mesej? Artikel ini akan memperkenalkan contoh kod khusus menggunakan Redis dan MySQL untuk melaksanakan kedua-dua fungsi ini.
Kod sampel adalah seperti berikut:
// 连接Redis $redis = new Redis(); $redis->connect('127.0.0.1', 6379); // 消息去重 function deduplicate($message) { if ($redis->sismember('processed_messages', $message)) { return false; // 已处理过的消息,不再处理 } // 处理消息的逻辑... $redis->sadd('processed_messages', $message); return true; }
Dalam kod di atas, kami menggunakan kaedah sismember dan sadd Redis untuk menentukan sama ada mesej telah diproses. Jika mesej sudah wujud dalam koleksi Redis processed_messages, ini bermakna mesej telah diproses dan palsu akan dikembalikan secara langsung. Jika tidak, proses mesej dan tambahkannya pada koleksi.
Kod sampel adalah seperti berikut:
CREATE TABLE messages ( id INT AUTO_INCREMENT PRIMARY KEY, message VARCHAR(255) NOT NULL UNIQUE KEY message_index (message) );
Dalam kod di atas, kami mencipta jadual mesej, di mana medan mesej mentakrifkan indeks unik melalui UNIQUE KEY. Seterusnya, sebelum memasukkan mesej, kita perlu menentukan sama ada mesej itu sudah wujud.
Kod sampel adalah seperti berikut:
// 连接MySQL $mysqli = new mysqli('localhost', 'username', 'password', 'database'); // 消息幂等性处理 function handle_message($message) { $escaped_message = $mysqli->real_escape_string($message); $select_query = "SELECT id FROM messages WHERE message = '$escaped_message'"; $result = $mysqli->query($select_query); if ($result->num_rows > 0) { return; // 消息已存在,不再处理 } // 处理消息的逻辑... $insert_query = "INSERT INTO messages (message) VALUES ('$escaped_message')"; $mysqli->query($insert_query); }
Dalam kod di atas, kami menggunakan kaedah real_escape_string mysqli untuk melepaskan mesej dan menghalang serangan suntikan SQL. Kemudian, kami menanyakan jadual mesej untuk menentukan sama ada mesej sudah wujud Jika bilangan baris dalam set hasil lebih daripada 0, ini bermakna mesej itu sudah wujud dan boleh dikembalikan secara langsung. Jika tidak, proses mesej dan masukkan ke dalam jadual.
Rujukan:
Atas ialah kandungan terperinci Aplikasi teknologi baris gilir dalam penyahduplikasian mesej dan mati pucuk mesej dalam PHP dan MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!