Swoole是一個高性能的PHP擴展,它提供了異步并發、協程、WebSocket等功能
首先,確保你已經安裝了Swoole擴展。如果沒有,請參考Swoole官方文檔進行安裝。接下來,安裝Redis擴展。在命令行中運行以下命令:
pecl install redis
然后,在php.ini
文件中添加以下行以啟用Redis擴展:
extension=redis.so
swoole_redis_example.php
),并編寫以下代碼:<?php
// 創建一個Swoole協程服務器
$server = new Swoole\WebSocket\Server("0.0.0.0", 9501);
// 監聽WebSocket連接打開事件
$server->on('open', function (Swoole\WebSocket\Server $server, $request) {
echo "客戶端 {$request->fd} 成功建立連接。\n";
});
// 監聽WebSocket消息事件
$server->on('message', function (Swoole\WebSocket\Server $server, $frame) {
$data = json_decode($frame->data, true);
$key = $data['key'];
$value = $data['value'];
// 使用Redis擴展將數據存儲到Redis中
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$redis->set($key, $value);
$redis->close();
// 將存儲結果返回給客戶端
$server->push($frame->fd, json_encode(['status' => 'success', 'message' => '數據已存儲到Redis中']));
});
// 監聽WebSocket連接關閉事件
$server->on('close', function ($ser, $fd) {
echo "客戶端 {$fd} 斷開連接。\n";
});
// 啟動服務器
$server->start();
在命令行中,使用以下命令運行PHP文件:
php swoole_redis_example.php
現在,你的Swoole協程服務器已經在監聽9501端口。你可以使用WebSocket客戶端連接到服務器,并發送包含key
和value
的請求。服務器將使用Redis擴展將數據存儲到Redis中,并將結果返回給客戶端。
注意:在實際應用中,你可能需要根據實際情況調整代碼,例如使用協程版本的Redis客戶端庫(如Swoole\Coroutine\Redis),并處理可能的異常。