該種方法在Easyswoole中實(shí)現(xiàn) Mysqli 連接池的另外一種形式。 封裝度更高,使用更簡單。
實(shí)際開發(fā)中推薦使用該種方法 使用orm連接池 ,使用過模型操作mysql 更便捷
1.安裝
安裝orm組件
composer require easyswoole/orm --ignore-platform-reqs
# 該組件已包含了 easyswoole/pool 組件
- 配置連接參數(shù) 并注冊到 easyswoole服務(wù)注冊中心
1. 在 easyswoole中配置文件中 /dev.php | produce.php 中 追加mysql 鏈接參數(shù)配置
/**
* mysql連接池 配置
*/
'mysql' => [
"name"=>"default",
'host' => '192.168.2.87',
'port' => 3306,
'user' => 'root', // 登陸用戶名
'password' => '123456', //登錄密碼
'database' => 'test' , // 數(shù)據(jù)庫名稱
'timeout' => 45,
'charset' => 'utf8',
"strict_type"=>false, //
"fetch_mode"=>false, // 開啟嚴(yán)格模式,返回的字段將自動轉(zhuǎn)為數(shù)字類型
// 以下是連接池屬性
"intervalCheckTime" => 5,// 定時器執(zhí)行頻率 用于定時執(zhí)行連接池對象回收,創(chuàng)建操作
"maxIdleTime" => 5, // 連接池對象最大閑置時間(秒)
"minObjectNum" => 5, // 連接池最小連接數(shù)
"maxObjectNum" => 30, // 連接池最大連接數(shù)
"getObjectTimeout" => 8.0, //
"autoPing"=>8,// 間隔自動 ping的時間
],
2. 在 /EasySwooleEvent.php 中的 initialize() 方法中注冊連接池
$mysqlConfig= \EasySwoole\EasySwoole\Config::getInstance()->getConf("mysql"); // 獲取配置環(huán)境中的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"]);
// 重點(diǎn)... 注冊 orm連接池管理器1
\EasySwoole\ORM\DbManager::getInstance()->addConnection(new Connection($config),$mysqlConfig["name"]);
// ... 可以注冊多個數(shù)據(jù)庫鏈接, 通過 orm 切換到不同的數(shù)據(jù)源。 addConnection 方法的第二個參數(shù)是字符串,用于表示數(shù)據(jù)源。 在后面的定義模型中根據(jù) 數(shù)據(jù)源名稱 切換 模型不同的數(shù)據(jù)源
} catch (Throwable $e) {
$log = "系統(tǒng)啟動時注入mysqli orm異常 Msg:{$e->getMessage()}";
// 記錄系統(tǒng)啟動異常 .....
}
完成上面的1,2步驟 在項目中創(chuàng)建模型, 就可以使用了。 詳細(xì)使用文檔,參考官網(wǎng)。
- 介紹 orm 切換不同的數(shù)據(jù)源執(zhí)行sql
由于在項目中需要切換不同的數(shù)據(jù)源執(zhí)行
方法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';