ORM
EasySwoole
為了支持以 PHP 8
注解的方式來定義數據庫對象映射,于是開發了 fast-db
這個數據庫操作組件。
組件要求
- EasySwoole >=3.7.1
- php: >= 8.1
- easyswoole/mysqli: ^3.0
- easyswoole/pool: ^2.0
- easyswoole/spl: ^2.0
安裝
composer require easyswoole/fast-db
連接池注冊
在 EasySwoole 中使用
首先我們在 EasySwoole
框架的 EasySwooleEvent
事件(即框架根目錄的 EasySwooleEvent.php
文件中)的 initialize
方法 或 mainServerCreate
方法中進行注冊連接,如下所示:
EasySwooleEvent.php
<?php
namespace EasySwoole\EasySwoole;
use EasySwoole\EasySwoole\AbstractInterface\Event;
use EasySwoole\EasySwoole\Swoole\EventRegister;
use EasySwoole\FastDb\FastDb;
class EasySwooleEvent implements Event
{
public static function initialize()
{
date_default_timezone_set('Asia/Shanghai');
// 注冊方式1:在 initialize 方法中注冊連接
$config = new \EasySwoole\FastDb\Config([
'name' => 'default', // 設置 連接池名稱,默認為 default
'host' => '127.0.0.1', // 設置 數據庫 host
'user' => 'easyswoole', // 設置 數據庫 用戶名
'password' => 'easyswoole', // 設置 數據庫 用戶密碼
'database' => 'easyswoole', // 設置 數據庫庫名
'port' => 3306, // 設置 數據庫 端口
'timeout' => 5, // 設置 數據庫連接超時時間
'charset' => 'utf8', // 設置 數據庫字符編碼,默認為 utf8
'autoPing' => 5, // 設置 自動 ping 客戶端鏈接的間隔
'useMysqli' => false, // 設置 不使用 php mysqli 擴展連接數據庫
// 配置 數據庫 連接池配置,配置詳細說明請看連接池組件 http://www.fe88.cn/Components/Pool/introduction.html
// 下面的參數可使用組件提供的默認值
'intervalCheckTime' => 15 * 1000, // 設置 連接池定時器執行頻率
'maxIdleTime' => 10, // 設置 連接池對象最大閑置時間 (秒)
'maxObjectNum' => 20, // 設置 連接池最大數量
'minObjectNum' => 5, // 設置 連接池最小數量
'getObjectTimeout' => 3.0, // 設置 獲取連接池的超時時間
'loadAverageTime' => 0.001, // 設置 負載閾值
]);
// 或使用對象設置屬性方式進行配置
// $config->setName('default');
// $config->setHost('127.0.0.1');
FastDb::getInstance()->addDb($config);
// 或在注冊時指定連接池的名稱
// FastDb::getInstance()->addDb($config, $config['name']);
}
public static function mainServerCreate(EventRegister $register)
{
// 注冊方式2:在 mainServerCreate 方法中注冊連接
// $config = new \EasySwoole\FastDb\Config([
// 'name' => 'default', // 設置 連接池名稱,默認為 default
// 'host' => '127.0.0.1', // 設置 數據庫 host
// 'user' => 'easyswoole', // 設置 數據庫 用戶名
// 'password' => 'easyswoole', // 設置 數據庫 用戶密碼
// 'database' => 'easyswoole', // 設置 數據庫庫名
// 'port' => 3306, // 設置 數據庫 端口
// 'timeout' => 5, // 設置 數據庫連接超時時間
// 'charset' => 'utf8', // 設置 數據庫字符編碼,默認為 utf8
// 'autoPing' => 5, // 設置 自動 ping 客戶端鏈接的間隔
// // 配置 數據庫 連接池配置,配置詳細說明請看連接池組件 http://www.fe88.cn/Components/Pool/introduction.html
// // 下面的參數可使用組件提供的默認值
// 'intervalCheckTime' => 15 * 1000, // 設置 連接池定時器執行頻率
// 'maxIdleTime' => 10, // 設置 連接池對象最大閑置時間 (秒)
// 'maxObjectNum' => 20, // 設置 連接池最大數量
// 'minObjectNum' => 5, // 設置 連接池最小數量
// 'getObjectTimeout' => 3.0, // 設置 獲取連接池的超時時間
// 'loadAverageTime' => 0.001, // 設置 負載閾值
// ]);
// FastDb::getInstance()->addDb($config);
}
}
上述2種注冊方式注冊結果是一樣的。如需注冊多個鏈接,請在配置項中加入 name 屬性用于區分連接池。
在其他框架中使用
<?php
use EasySwoole\FastDb\FastDb;
$config = new \EasySwoole\FastDb\Config([
'name' => 'default', // 設置 連接池名稱,默認為 default
'host' => '127.0.0.1', // 設置 數據庫 host
'user' => 'easyswoole', // 設置 數據庫 用戶名
'password' => 'easyswoole', // 設置 數據庫 用戶密碼
'database' => 'easyswoole', // 設置 數據庫庫名
'port' => 3306, // 設置 數據庫 端口
'timeout' => 5, // 設置 數據庫連接超時時間
'charset' => 'utf8', // 設置 數據庫字符編碼,默認為 utf8
'autoPing' => 5, // 設置 自動 ping 客戶端鏈接的間隔
'useMysqli' => false, // 設置 不使用 php mysqli 擴展連接數據庫
// 配置 數據庫 連接池配置,配置詳細說明請看連接池組件 http://www.fe88.cn/Components/Pool/introduction.html
// 下面的參數可使用組件提供的默認值
'intervalCheckTime' => 15 * 1000, // 設置 連接池定時器執行頻率
'maxIdleTime' => 10, // 設置 連接池對象最大閑置時間 (秒)
'maxObjectNum' => 20, // 設置 連接池最大數量
'minObjectNum' => 5, // 設置 連接池最小數量
'getObjectTimeout' => 3.0, // 設置 獲取連接池的超時時間
'loadAverageTime' => 0.001, // 設置 負載閾值
]);
FastDb::getInstance()->addDb($config);
配置項解析
\EasySwoole\FastDb\Config
繼承自 \EasySwoole\Pool\Config
,因此 ORM
具備連接池的特性。
- autoPing
- intervalCheckTime
- maxIdleTime
- maxObjectNum
- minObjectNum