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