PHP websocket连接mysql redis
时间: 2023-11-02 08:00:13 浏览: 41
在 PHP 中,可以使用 Swoole 扩展来实现 WebSocket 连接。Swoole 是 PHP 的一个异步、并行、高性能网络通信框架,支持 WebSocket、TCP/UDP 协议等。
下面是一个简单的 PHP WebSocket 连接 MySQL 和 Redis 的示例:
```php
<?php
// 引入 Swoole 库
require_once 'path/to/swoole/autoload.php';
// 创建 WebSocket 服务器
$server = new Swoole\WebSocket\Server('0.0.0.0', 9501);
// 监听 WebSocket 连接事件
$server->on('open', function (Swoole\WebSocket\Server $server, $request) {
echo "new client connected, fd: {$request->fd}\n";
});
// 监听 WebSocket 消息事件
$server->on('message', function (Swoole\WebSocket\Server $server, $frame) {
echo "received message: {$frame->data}\n";
// 连接 MySQL 数据库
$mysql = new mysqli('localhost', 'root', 'password', 'database');
if ($mysql->connect_errno) {
echo "MySQL connect failed: {$mysql->connect_error}\n";
return;
}
// 执行查询操作
$sql = "SELECT * FROM table";
$result = $mysql->query($sql);
if ($result === false) {
echo "MySQL query failed: {$mysql->error}\n";
return;
}
// 获取查询结果
$data = [];
while ($row = $result->fetch_assoc()) {
$data[] = $row;
}
// 关闭 MySQL 连接
$mysql->close();
// 连接 Redis 数据库
$redis = new Redis();
if (!$redis->connect('127.0.0.1', 6379)) {
echo "Redis connect failed\n";
return;
}
// 将查询结果存入 Redis
$redis->set('data', json_encode($data));
// 关闭 Redis 连接
$redis->close();
// 发送消息给客户端
$server->push($frame->fd, json_encode($data));
});
// 启动 WebSocket 服务器
$server->start();
```
上面的代码中,我们在 WebSocket 消息事件中连接了 MySQL 和 Redis 数据库,执行了一次查询操作,并将查询结果存入了 Redis 中。最后,将查询结果以 JSON 格式发送给了客户端。
需要注意的是,上面的代码仅供参考,实际应用中需要根据具体情况进行修改和完善。例如,需要考虑数据库连接池、错误处理、安全性等问题。