Zan 连接池
### 一、设计背景
Zan 是基于 PHP 协程的网络服务框架,提供最简单的方式开发面向 C10K+ 的高并发 HTTP 服务或 SOA 服务。
核心特性:
1. 基于 yield 实现了独立堆栈的协程
2. 类似于 Golang 的并发编程模型实现
3. 基于 swoole 提供非阻塞 I/O 服务
4. 连接池支持
5. 类似 Golang 的 defer 机制解决由于异常导致的资源未释放、锁未释放的问题
6. ……. 等
连接池作为其核心特性之一,内置了 MySQL、Redis、syslog 等多种组件。
### 二、设计结构
Zan 连接池实现基于 PHP 协程,在服务启动时通过 ConnectionInitiator 进行初始化,将初始化好的 connection 对象被放入连接池中,connection 中有操作连接的基本方法。
进行初始化时可根据系统需要进行参数配置, 示例如下:
<?php
return [
'default_write' => [
'engine'=> 'mysqli',
'host' => '127.0.0.1',
'user' => 'user',
'password' => 'password',
'database' => 'db',
'port' => '3306',
'pool' => [
'heartbeat-time' => 35000,
'init-connection'=> 5,
'maximum-connection-count' =>20,
'minimum-connection-count' =>1,
],
]
];
连接池的使用也非常方便。
$connection = (yield ConnectionManager::getInstance()->get($poolName));
性能很好,与传统的方式一个 fmp 需要建立一个连接相比,Zan 连接池常驻内存,资源可共享,存取速度快,性能远远高于传统方式。
### 三、特点
- 使用简单。
- 可动态增减连接。
- 性能高。
- 可监控连接池状态。
### 四、源码
对此连接池感兴趣的朋友,可以在 github 查看文档和源码,欢迎共同探讨。
QQ 群: 115728122
- Zan - Zan 框架
- zan-doc - Zan PHP 开发者文档
- zan-installer - Zan PHP 脚手架工具
- zanhttp - Zan PHP HTTP demo