laravel异步mysql_基于 Swoole 构建高性能 Laravel 应用系列 —— 基于 SMProxy 通过协程调度实现 MySQL 连接池...

简介

我们之前都是基于 LaravelS 扩展在 Laravel 框架中使用 Swoole,但是 LaravelS 不支持 数据库 连接池,只能实现数据库长连接,而对于 PHP 应用来说,数据库连接池在提升性能方面确有显著功效,我们可以基于 Swoole 提供的异步任务或者协程来自己实现数据库连接池,不过还有一个现成的扩展可以使用,那就是 SMProxy ,SMProxy 是一个基于 Swoole 开发的 MySQL 数据库连接池,今天我们就以这个扩展为例演示如何在 Laravel 中使用数据库连接池。

实现原理

与传统 PHP 应用中数据库短连接(每次操作需要重新建立连接)不同,SMProxy 将数据库连接作为对象实例存储在内存中,当用户需要访问数据库时,第一次会建立连接,后面并不会建立新的连接,而是从连接池中取出一个已建立的空闲连接对象。使用完毕后,也不会将连接关闭,而是将连接放回连接池中,以供下一个请求访问使用。连接的建立、断开都由连接池自身来管理。

同时,还可以通过设置连接池的参数来控制连接池中的初始连接数、连接的上下限数以及每个连接的最大使用次数、最大空闲时间等等。也可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。超出最大连接数会采用协程挂起,等到有连接关闭再恢复协程继续操作。

功能特性

支持读写分离

支持数据库连接池,能够有效解决 PHP 带来的数据库连接瓶颈

支持 SQL92 标准

采用协程调度

支持多个数据库连接,多个数据库,多个用户,灵活搭配

遵守 MySQL 原生协议,跨语言,跨平台的通用中间件代理

支持 My

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值