easyswoole数据库连接池_EasySwoole使用Mysqli
EasySwoole使用Mysqli
羨仙.???2019 年 05 月 06 日
我為什么要寫這些東西呢!因?yàn)楹枚嗟奈臋n他并不是我所想的能復(fù)制粘貼就直接用了!還要改!有的地方寫的還不全.復(fù)制過(guò)來(lái)就報(bào)錯(cuò)!!而我希望我之前學(xué)過(guò)的東西在以后用的時(shí)候能tm直接復(fù)制粘貼去使用它!減少我效率,并不是百分之百的樂(lè)于分享!只是筆記好多都是貼的圖.直接復(fù)制代碼不好看,嚶嚶嚶
好話不多說(shuō)!首先來(lái)安裝mysqli類庫(kù)
安裝composer require easyswoole/mysqli
然后配置文件的參數(shù)官方文檔是這樣的/*################ MYSQL CONFIG ##################*/
'MYSQL' => [
'host' => '192.168.75.1',
'port' => '3306',
'user' => 'root',
'timeout' => '5',
'charset' => 'utf8mb4',
'password' => 'root',
'database' => 'cry',
'POOL_MAX_NUM' => '20',
'POOL_TIME_OUT' => '0.1',
],
而我的是這樣的.host = '127.0.0.1'
port = '3306'
user = 'root'
timeout = '5'
charset = 'utf8mb4'
password = 'root'
database = 'video'
POOL_MAX_NUM = '20'
POOL_TIME_OUT = '0.1'
配置文件這里我用的是Yaconf.配置的名字為mysql.ini
這個(gè)牛逼的東西日后會(huì)寫一篇(主要也是貼鏈接= =).現(xiàn)在先簡(jiǎn)單的說(shuō)一下獲取參數(shù)方法Yaconf::get('mysql').當(dāng)然你不能直接用還需要安裝.現(xiàn)在先給你秀一秀我是怎么用的.
測(cè)試調(diào)用接口use EasySwoole\Mysqli\Mysqli;
use EasySwoole\Mysqli\Config as mysqlConfig;
public function test()
{
$conf = \Yaconf::get('mysql');
$mysqlConf = new mysqlConfig($conf);
$db = new Mysqli($mysqlConf);
$data = $db->get('video');
$this->writeJson(0, 'ok', $data);
}
運(yùn)行結(jié)果
很簡(jiǎn)單的就成功了嘛!不過(guò)注意看文檔!這里必須要點(diǎn)過(guò)去看下文檔哈!因?yàn)樗沁@么說(shuō)的由于是協(xié)程狀態(tài),每次請(qǐng)求進(jìn)來(lái)都必須使用不同的實(shí)例,如果一個(gè)請(qǐng)求進(jìn)來(lái)就new,完成請(qǐng)求邏輯就銷毀,每次都會(huì)創(chuàng)建連接,然后銷毀,這樣開銷會(huì)非常大,所以我們可以采用連接池方式,復(fù)用連接EasySwooleEvent.php的initialize方法中注冊(cè)連接池對(duì)象
PoolManager::getInstance()->register(MysqlPool::class,Config::getInstance()->getConf('MYSQL.POOL_MAX_NUM'));
注意:那是官方的.而我的是這樣的PoolManager::getInstance()->register(MysqlPool::class,\Yaconf::get('mysql.POOL_MAX_NUM'));
可以看到調(diào)用了MysqlPool我們發(fā)現(xiàn)有點(diǎn)點(diǎn)問(wèn)題.至于啥問(wèn)題你下載了自己和我的對(duì)比著看吧.如果你不用我的方式獲取配置那就沒有問(wèn)題的哦~我只是適配我自己的
官方文檔中有寫好的鏈接池demo.直接下載來(lái)放到App/Utility/Pool.根據(jù)個(gè)人哈,不一定非要放到這,demo傳送門App\Utility\Pool\MysqlPool.php的createObject方法就行protected function createObject()
{
//當(dāng)連接池第一次獲取連接時(shí),會(huì)調(diào)用該方法
//我們需要在該方法中創(chuàng)建連接
//返回一個(gè)對(duì)象實(shí)例
//必須要返回一個(gè)實(shí)現(xiàn)了AbstractPoolObject接口的對(duì)象
$conf = \Yaconf::get('mysql');
$dbConf = new Config($conf);
return new MysqlObject($dbConf);
// TODO: Implement createObject() method.
}
然后你自己找文檔吧!不給鏈接的.通過(guò)剛才的那個(gè)鏈接也行
使用defer方法直接獲取一個(gè)連接池連接,直接使用,協(xié)程結(jié)束后自動(dòng)回收:public function defert()
{
$db = MysqlPool::defer();
$data = $db->get('video');
$this->writeJson(0, 'ok', $data);
}
很明顯成功了嘛!也沒干什么嘛.官方還給了一堆的方法.有興趣可以自己嘗試哈
總結(jié)
以上是生活随笔為你收集整理的easyswoole数据库连接池_EasySwoole使用Mysqli的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: java队列优先级_优先级队列-Java
- 下一篇: java正则表达式 分词_[Java]使