该种方法在Easyswoole中实现 Mysqli 连接池的另外一种形式。 封装度更高,使用更简单。
实际开发中推荐使用该种方法 使用orm连接池 ,使用过模型操作mysql 更便捷
1.安装
安装orm组件
composer require easyswoole/orm --ignore-platform-reqs
# 该组件已包含了 easyswoole/pool 组件
- 配置连接参数 并注册到 easyswoole服务注册中心
1. 在 easyswoole中配置文件中 /dev.php | produce.php 中 追加mysql 链接参数配置
/**
* mysql连接池 配置
*/
'mysql' => [
"name"=>"default",
'host' => '192.168.2.87',
'port' => 3306,
'user' => 'root', // 登陆用户名
'password' => '123456', //登录密码
'database' => 'test' , // 数据库名称
'timeout' => 45,
'charset' => 'utf8',
"strict_type"=>false, //
"fetch_mode"=>false, // 开启严格模式,返回的字段将自动转为数字类型
// 以下是连接池属性
"intervalCheckTime" => 5,// 定时器执行频率 用于定时执行连接池对象回收,创建操作
"maxIdleTime" => 5, // 连接池对象最大闲置时间(秒)
"minObjectNum" => 5, // 连接池最小连接数
"maxObjectNum" => 30, // 连接池最大连接数
"getObjectTimeout" => 8.0, //
"autoPing"=>8,// 间隔自动 ping的时间
],
2. 在 /EasySwooleEvent.php 中的 initialize() 方法中注册连接池
$mysqlConfig= \EasySwoole\EasySwoole\Config::getInstance()->getConf("mysql"); // 获取配置环境中的mysql配置
$config = \EasySwoole\ORM\Db\Config($mysqlConfig);
try {
$config->setIntervalCheckTime($mysqlConfig["intervalCheckTime"]);
$config->setGetObjectTimeout($mysqlConfig["getObjectTimeout"]);
$config->setMaxIdleTime($mysqlConfig["maxIdleTime"]);
$config->setMinObjectNum($mysqlConfig["minObjectNum"]);
$config->setMaxObjectNum($mysqlConfig["maxObjectNum"]);
$config->setAutoPing($mysqlConfig["autoPing"]);
// 重点... 注册 orm连接池管理器1
\EasySwoole\ORM\DbManager::getInstance()->addConnection(new Connection($config),$mysqlConfig["name"]);
// ... 可以注册多个数据库链接, 通过 orm 切换到不同的数据源。 addConnection 方法的第二个参数是字符串,用于表示数据源。 在后面的定义模型中根据 数据源名称 切换 模型不同的数据源
} catch (Throwable $e) {
$log = "系统启动时注入mysqli orm异常 Msg:{$e->getMessage()}";
// 记录系统启动异常 .....
}
完成上面的1,2步骤 在项目中创建模型, 就可以使用了。 详细使用文档,参考官网。
- 介绍 orm 切换不同的数据源执行sql
由于在项目中需要切换不同的数据源执行
方法1 [不推荐]:
该种方法非常繁琐
\App\Modedl\TestModel::create()->setExecClient(new \EasySwoole\ORM\Db\MysqliClient(new \EasySwoole\Mysqli\Config([
"host"=>"xxx",
//....
])))->where("查询条件")->all();
方法2[推荐]:
// 在模型文件中 \App\Modedl\TestModel.php 中 添加属性
protected $connectionName = 'read';
网友评论