swoole 之创建一个 MySQL 连接池 学习分享记录 [持续更新]
先了解基础知识 swoole中的协程
- swoole4.0以后的协程 Coroutine 采用CSP 模型进行同步编程方式 底层实现异步IO
开辟协程 很简单如下 方法 和go 差不多
php 版本 一个闭包
go(function(){
});
GO 版本
函数之前加上关键字 go
swoole 中的定时器 为了后面定时清理空闲连接池 防止mysql内存浪费
\Swoole\Timer::tick(2000,function(){
$this->cleanPool();
});
① 首先我们定义一个DB 抽象类
abstract class DBPool{
}
② 我们定义几个私有变量和抽象保护方法 为后面生成连接池做铺垫
abstract class DBPool{
private $min;最小连接数
private $max;最大连接数
private $conns;一个协程DB管道 作用协程通信
private $count;当前所有连接数
private $idleTime=10;连接空闲时间秒
abstract protected function newDB(); 创建一个新的DB 类 可能是PDO 类 可能是协程客户端
}
代码链接 https://github.com/jiqinwj/swoole_coroutin...
本作品采用《CC 协议》,转载必须注明作者和本文链接