Swoole dan Workerman ialah dua sambungan PHP yang sangat popular, kedua-duanya boleh mencapai komunikasi rangkaian berprestasi tinggi dan fungsi tolak mesej. Apabila menolak mesej dalam PHP dan MySQL, masa nyata dan kebolehpercayaan adalah faktor penting. Artikel ini akan memperkenalkan cara menggunakan Swoole dan Workerman untuk melaksanakan push mesej masa nyata dan memberikan contoh kod khusus.
1. Tolak mesej Swoole
Swoole ialah enjin komunikasi rangkaian PHP berprestasi tinggi sumber terbuka. Ia berdasarkan sambungan PHP dan menyediakan ciri seperti IO tak segerak, coroutine dan pelbagai proses, yang boleh merealisasikan tolakan mesej masa nyata dengan mudah. Berikut ialah contoh kod untuk menggunakan Swoole untuk melaksanakan push mesej masa nyata:
<?php // 创建WebSocket服务器 $server = new SwooleWebSocketServer('0.0.0.0', 9501); // 监听WebSocket连接打开事件 $server->on('open', function (SwooleWebSocketServer $server, $request) { echo "connection open: {$request->fd} "; }); // 监听WebSocket消息事件 $server->on('message', function (SwooleWebSocketServer $server, $frame) { echo "received message: {$frame->data} "; // 在此处处理消息推送逻辑,比如将消息写入MySQL数据库 // 广播消息给所有连接的客户端 foreach ($server->connections as $fd) { $server->push($fd, $frame->data); } }); // 监听WebSocket连接关闭事件 $server->on('close', function ($ser, $fd) { echo "connection close: {$fd} "; }); // 启动服务器 $server->start(); ?>
Dalam kod di atas, kami mencipta pelayan WebSocket dan mendengar acara pembukaan, mesej dan penutup sambungan. Selepas menerima mesej, kita boleh memproses logik tolak mesej. Di sini kami hanya menyiarkan mesej kepada semua pelanggan yang berkaitan, anda boleh melakukan pemprosesan yang lebih kompleks mengikut keperluan sebenar.
2. Tolak mesej pekerja
Workerman ialah satu lagi enjin komunikasi rangkaian PHP berprestasi tinggi, yang menyediakan fungsi tolakan mesej masa nyata dalam cara berbilang proses. Berikut ialah contoh kod untuk menggunakan Workerman untuk melaksanakan push mesej masa nyata:
<?php // 引入Workerman的自动加载文件 require_once __DIR__ . '/vendor/autoload.php'; use WorkermanWorker; // 创建一个Worker监听9501端口,使用WebSocket协议通信 $ws_worker = new Worker("websocket://0.0.0.0:9501"); // 启动4个进程对外提供服务 $ws_worker->count = 4; // 监听WebSocket连接打开事件 $ws_worker->onConnect = function ($connection) { echo "new connection "; }; // 监听WebSocket消息事件 $ws_worker->onMessage = function ($connection, $data) { echo "received message: {$data} "; // 在此处处理消息推送逻辑,比如将消息写入MySQL数据库 // 广播消息给所有连接的客户端 foreach ($connection->worker->connections as $client_connection) { $client_connection->send($data); } }; // 启动Worker Worker::runAll(); ?>
KodWorkerman sangat serupa dengan kod Swoole Kami juga mencipta pelayan WebSocket dan mendengar acara pembukaan sambungan dan mesej . Setelah mesej diterima, kami boleh mengendalikan logik tolak mesej di sana dan menyiarkan mesej itu kepada semua pelanggan yang bersambung.
3. Perbandingan antara Swoole dan Workerman
Swoole dan Workerman adalah kedua-dua sambungan PHP yang sangat baik yang dapat merealisasikan fungsi push mesej masa nyata. Kelebihan dan kekurangan mereka terutamanya ditunjukkan dalam aspek berikut:
Apabila memilih untuk menggunakan Swoole atau Workerman, anda perlu membuat keputusan berdasarkan keperluan sebenar dan keadaan projek. Tidak kira sambungan yang anda pilih, anda boleh melaksanakan push mesej masa nyata dalam PHP dan MySQL serta menyediakan komunikasi rangkaian berprestasi tinggi dan boleh dipercayai. Semoga artikel ini bermanfaat kepada semua orang!
Atas ialah kandungan terperinci Masa nyata dan kebolehpercayaan mesej Swoole dan Workerman dalam PHP dan MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!