一、设计背景

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中有操作连接的基本方法。

进行初始化时可根据系统需要进行参数配置,示例如下:

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

欢迎关注我们的公众号

zan php demo,Zan 连接池相关推荐

  1. zan php demo,zan框架的连接池实现

    ###一.设计背景 Zan是基于PHP协程的网络服务框架,提供最简单的方式开发面向C10K+的高并发HTTP服务或SOA服务. 核心特性: 基于 yield 实现了独立堆栈的协程 类似于 Golang ...

  2. zan php demo,ajax+php+mysql实现无刷新点赞功能

    从动态图看出来,点击赞的按钮的时候,旁边的赞数量在无刷新地增加.打开数据库也能看到赞数量更新了. 原理就是通过ajax异步提交数据给数据库. 首先前端页面就是一个按钮和赞数量. 数据库名,test,表 ...

  3. springboot集成mongodb 连接池 多数据库源,源码demo

    上一篇介绍了 springboot集成mongodb 多数据库源切换 源码demo 开发环境: windows 7 idea windows64 mongodb 如果没安装运行 点这里 navicat ...

  4. JDBC数据源连接池(1)---DBCP

    何为数据源呢?也就是数据的来源.我在前面的一篇文章<JDBC原生数据库连接>中,采用了mysql数据库,数据来源于mysql,那么mysql就是一种数据源.在实际工作中,除了mysql,往 ...

  5. 使用 TFDConnection 的 pooled 连接池

    从开始看到这个属性,就一直认为他可以提供一个连接池管理功能, 苦于文档资料太少, 甚至在帮助中对该属性的使用都没有任何介绍,如果你搜索百度,也会发现基本没资料. 最后终于在其官方网站看到了其完整相关的 ...

  6. 有没有想过,手写一个连接池?

    点击上方"方志朋",选择"置顶公众号" 技术文章第一时间送达! 作者:矢泽妮可 来源:http://h5ip.cn/F7US 连接池的使命! 无论是线程池还是d ...

  7. jndi连接池链接mysql_使用容器提供的数据库连接池--JNDI用法

    现在,数据库的连接没有用到连接池几乎很少很少,每个项目组都可能有自己的数据库连接池组件,各容器提供商也提供了各自的数据库连接池,下面介绍一下tomcat和weblogic使用JNDI的数据库连接管理. ...

  8. Redis进阶-JedisCluster初始化 自动管理连接池中的连接 _ 源码分析

    文章目录 Pre Code 初始化 槽计算 无需手工调用close方法 Pre Redis进阶-Redis集群原理剖析及gossip协议初探 集群原理部分 简单的提了下Jest是如何实现Redis C ...

  9. 实现AIDL接口的Binder连接池

    Binder作为AIDL通信的核心, 在使用中经常需要重复利用, 动态管理AIDL接口. Binder连接池的主要作用是把Binder请求统一发送至Service执行, 即动态管理Binder操作, ...

最新文章

  1. mobile_numen_3
  2. MongoDB -- Error: unclean shutdown detected
  3. SpringCloud实战5-Feign声明式服务调用
  4. cocos2d-x游戏开发(五)神奇的自动释放
  5. python tempfile cleanup_python tempfile 模块---生成临时文件和目录
  6. 用node-webkit开发多平台的桌面客户端
  7. JavaScript 的 switch 条件语句
  8. Pandas DataFrame GroupBy.Apply
  9. java 一元线性回归_Java中的多元线性回归
  10. android 播放3gp音频,Android的Media(录音,播放音乐,播放视频等)
  11. 2021-10-13
  12. 0627-TP整理三(对表的操作,数据的显示)
  13. bt磁力链接转换种子中的问题
  14. 西门子smart200 圆弧插补 整合画图程序 2轴3轴
  15. 原生select下拉框样式修改:去除聚焦的黄色边框样式
  16. 机器学习----深刻理解高斯过程回归
  17. Java培训机构可靠吗?
  18. 网络时代人物标签(两种)
  19. DellR720安装系统不能正常进入系统
  20. pyspark入门---机器学习实战预测婴儿出生率(二)使用ML库

热门文章

  1. 重庆到西安谋划高铁 望融入西三角经济圈 3小时搞定
  2. 会“教”难“育”,AIGC卷不了教师
  3. ArcGIS学习06:地理数据库
  4. IDEA jra包报ClassNotFound异常
  5. 股票k线接口怎样进行查询?
  6. [Go] go基础4
  7. 盘点智能养猪场常用设备,养殖智能监控系统作用大
  8. ciTerm - 程序员终端摸鱼神器,建议全屏后体验效果更佳
  9. 一个硕士生导师到底可以带多少学生?
  10. u盘部分文件无故消失,要怎么找回?