easyswoole数据库连接池_EasySwoole使用Mysqli
EasySwoole使用Mysqli
羨仙.???2019 年 05 月 06 日
我為什么要寫這些東西呢!因為好多的文檔他并不是我所想的能復制粘貼就直接用了!還要改!有的地方寫的還不全.復制過來就報錯!!而我希望我之前學過的東西在以后用的時候能tm直接復制粘貼去使用它!減少我效率,并不是百分之百的樂于分享!只是筆記好多都是貼的圖.直接復制代碼不好看,嚶嚶嚶
好話不多說!首先來安裝mysqli類庫
安裝composer require easyswoole/mysqli
然后配置文件的參數官方文檔是這樣的/*################ 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
這個牛逼的東西日后會寫一篇(主要也是貼鏈接= =).現在先簡單的說一下獲取參數方法Yaconf::get('mysql').當然你不能直接用還需要安裝.現在先給你秀一秀我是怎么用的.
測試調用接口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);
}
運行結果
很簡單的就成功了嘛!不過注意看文檔!這里必須要點過去看下文檔哈!因為他是這么說的由于是協程狀態,每次請求進來都必須使用不同的實例,如果一個請求進來就new,完成請求邏輯就銷毀,每次都會創建連接,然后銷毀,這樣開銷會非常大,所以我們可以采用連接池方式,復用連接EasySwooleEvent.php的initialize方法中注冊連接池對象
PoolManager::getInstance()->register(MysqlPool::class,Config::getInstance()->getConf('MYSQL.POOL_MAX_NUM'));
注意:那是官方的.而我的是這樣的PoolManager::getInstance()->register(MysqlPool::class,\Yaconf::get('mysql.POOL_MAX_NUM'));
可以看到調用了MysqlPool我們發現有點點問題.至于啥問題你下載了自己和我的對比著看吧.如果你不用我的方式獲取配置那就沒有問題的哦~我只是適配我自己的
官方文檔中有寫好的鏈接池demo.直接下載來放到App/Utility/Pool.根據個人哈,不一定非要放到這,demo傳送門App\Utility\Pool\MysqlPool.php的createObject方法就行protected function createObject()
{
//當連接池第一次獲取連接時,會調用該方法
//我們需要在該方法中創建連接
//返回一個對象實例
//必須要返回一個實現了AbstractPoolObject接口的對象
$conf = \Yaconf::get('mysql');
$dbConf = new Config($conf);
return new MysqlObject($dbConf);
// TODO: Implement createObject() method.
}
然后你自己找文檔吧!不給鏈接的.通過剛才的那個鏈接也行
使用defer方法直接獲取一個連接池連接,直接使用,協程結束后自動回收:public function defert()
{
$db = MysqlPool::defer();
$data = $db->get('video');
$this->writeJson(0, 'ok', $data);
}
很明顯成功了嘛!也沒干什么嘛.官方還給了一堆的方法.有興趣可以自己嘗試哈
總結
以上是生活随笔為你收集整理的easyswoole数据库连接池_EasySwoole使用Mysqli的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java队列优先级_优先级队列-Java
- 下一篇: java正则表达式 分词_[Java]使