Swoole支持异步MySQL客户端,可以在不阻塞主服务器进程的情况下执行数据库查询。
这对于需要频繁访问数据库的应用来说非常有用。
$server = new Swoole\Server("127.0.0.1", 9501);
$server->on('start', function ($server) {
echo "Swoole server is started at http://127.0.0.1:9501\n";
});
$server->on('receive', function ($server, $fd, $from_id, $data) {
// 异步查询数据库
$db = new Swoole\Coroutine\MySQL();
$server->defer(function () use ($db) {
$db->close();
});
$db->connect([
'host' => '127.0.0.1',
'user' => 'db_user',
'password' => 'db_password',
'database' => 'test',
'charset' => 'utf8',
]);
$sql = "SELECT * FROM your_table WHERE id = ?";
$stmt = $db->prepare($sql);
$result = $stmt->execute([1]);
if ($result) {
$row = $stmt->fetch();
$server->send($fd, json_encode($row));
} else {
$server->send($fd, "Error: " . $db->error);
}
});
$server->start();
上面的代码示例使用了Swoole的协程MySQL客户端,它需要在Swoole 4.1.0 或更高版本中启用协程支持。
`$server->defer` 用于确保在协程结束时关闭数据库连接。
0 条评论。