本文主要給大家介紹了關于swoole+redis實現股票和區塊鏈服務的相關內容,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹吧。
PHP 的redis擴展是阻塞式 IO ,使用訂閱/發布模式時,會導致整個進程進入阻塞。因此必須使用Swoole\Redis異步客戶端來實現。
$server = new swoole_websocket_server("0.0.0.0", 9501); $server->on('workerStart', function ($server, $workerId) { $client = new swoole_redis; $client->on('message', function (swoole_redis $client, $result) use ($server) { if ($result[0] == 'message') { foreach($server->connections as $fd) { $server->push($fd, $result[1]); } } }); $client->connect('127.0.0.1', 6379, function (swoole_redis $client, $result) { $client->subscribe('kline1min'); }); }); $server->on('open', function ($server, $request) { }); $server->on('message', function (swoole_websocket_server $server, $frame) { $server->push($frame->fd, "hello"); }); $server->on('close', function ($serv, $fd) { }); $server->start();
- 在進程啟動(onWorkerStart)時創建了Swoole\Redis客戶端,連接到Redis服務器
- 連接成功后,訂閱msg_0主題的消息
- 當有新的message時,Swoole\Redis會觸發onMessage事件回調
- 在這個回調函數中使用$server->connections遍歷服務器所有的連接,發送消息
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對的支持。
【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。