iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Swoole4创建Mysql连接池
  • 855
分享到

Swoole4创建Mysql连接池

Swoole4创建Mysql连接池 2017-08-13 13:08:37 855人浏览 无得
摘要

  一 .什么是Mysql连接池 场景:每秒同时有1000个并发,但是这个mysql同时只能处理400个连接,mysql会宕机。 解决方案:连接池,这个连接池建立了200个和mysql的连接,这1000个并发就有顺序的共享这连接池中

Swoole4创建Mysql连接池

 

一 .什么是Mysql连接池

场景:每秒同时有1000个并发,但是这个mysql同时只能处理400个连接,mysql会宕机。

解决方案:连接池,这个连接池建立了200个和mysql的连接,这1000个并发就有顺序的共享这连接池中的200个连接。这个连接池能够带来额外的性能提升,因为这个和mysql建立连接的这个过程消耗较大,使用连接池只需连接一次mysql。

连接池定义:永不断开,要求我们的这个程序是一个常驻内存的程序。数据库连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的连接进行申请,使用,释放。

 

二.小案例

查找用户表数据库最新注册的3个会员?

(1)小提示

show processlist #mysql查看连接数

(2)创建10个mysql连接示例代码

PHP

//编写mysql连接池,这个类只能被实例化一次(单例)
class MysqlConnectionPool
{
    private static $instance;//单例对象
    private $connection_num = 10;//连接数量
    private $connection_obj = [];
 
    //构造方法连接mysql,创建20mysql连接
    private function __construct()
    {
        for($i=0;$i<$this->connection_num;$i++){
            $dsn = "mysql:host=127.0.0.1;dbnane=swoole";
            $this->connection_obj[] =  new Pdo($dsn,"root","rootmysql123");
        }
    }
    private function __clone()
    {
        // TODO: Implement __clone() method.
    }
    public static function getInstance()
    {
        if(is_null(self::$instance)){
            self::$instance = new self();
        }
    }
}
MysqlConnectionPool::getInstance();
//创建swool的http服务器对象
$serv = new swoole_http_server("0.0.0.0",8000);
//当浏览器链接点这个http服务器的时候,向浏览器发送helloworld
$serv->on("request", function($request,$response){
    //$request包含这个请求的所有信息,比如参数
    //$response包含返回给浏览器的所有信息,比如helloworld
 
    //(2.3)向浏览器发送helloworld
    $response->end("hello world");
});
//启动http服务器
$serv->start();

(3)效果

v2-9f0e6d0e2385159a015e2d583b39e8f2_720w.jpg

(4)完善mysql连接池

php

//编写mysql连接池,这个类只能被实例化一次(单例)
class MysqlConnectionPool
{
    private static $instance;//单例对象
    private $connection_num = 20;//连接数量
    private $connection_obj = [];
    private $avil_connection_num = 20;//可用连接
 
    //构造方法连接mysql,创建20mysql连接
    private function __construct()
    {
        for($i=0;$i<$this->connection_num;$i++){
            $dsn = "mysql:host=127.0.0.1;dbname=swoole";
            $this->connection_obj[] =  new Pdo($dsn,"root","rootmysql123");
        }
    }
    private function __clone()
    {
        // TODO: Implement __clone() method.
    }
    public static function getInstance()
    {
        if(is_null(self::$instance)){
            self::$instance = new self();
        }
        return self::$instance;
    }
 
    //执行sql操作
    public function query($sql)
    {
        if($this->avil_connection_num==0){
            throw new Exception("暂时没有可用的连接诶,请稍后");
        }
        //执行sql语句
        $pdo = array_pop($this->connection_obj);
        //可用连接数减1
        $this->avil_connection_num --;
        //使用从连接池中取出的mysql连接执行查询,并且把数据取成关联数组
        $rows = $pdo->query($sql)->fetchAll(PDO::FETCH_ASSOC);
        //把mysql连接放回连接池,可用连接数+1
        array_push($this->connection_obj,$pdo);
        $this->avil_connection_num ++;
        return $rows;
    }
}
//创建swool的http服务器对象
$serv = new swoole_http_server("0.0.0.0",8000);
//当浏览器链接点这个http服务器的时候,向浏览器发送helloworld
$serv->on("request", function($request,$response){
    //$request包含这个请求的所有信息,比如参数
    //$response包含返回给浏览器的所有信息,比如helloworld
    //向浏览器发送helloworld
    $stop = false;
    while (!$stop){
        try{
            $sql = "SELECT * FROM user ORDER BY id  DESC LIMIT 5";
            $rows = MysqlConnectionPool::getInstance()->query($sql);
            $response->end(json_encode($rows));
            $stop = true;
        }catch (Exception $e){
            usleep(100000);
        }
    }
 
});
//启动http服务器
$serv->start();

 

attachments-2020-04-RQTImKtM5e843d87232c6.jpg

您可能感兴趣的文档:

--结束END--

本文标题: Swoole4创建Mysql连接池

本文链接: https://www.lsjlt.com/news/5277.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么创建mysql数据库连接池
    在mysql中利用DBUtils创建数据库连接池的方法具体方法如下:import pymysqlfrom DBUtils.PooledDB import PooledDB, SharedDBConnectionPOOL = PooledDB...
    99+
    2024-04-02
  • Python中怎么创建mysql数据库连接池
    这篇文章给大家介绍Python中怎么创建mysql数据库连接池,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。安装为顶层模块 如果你打算在除了Webware之外的程序中使用,推荐安装为顶层模块:python s...
    99+
    2023-06-17
  • C#数据库连接池的创建
    本篇内容主要讲解“C#数据库连接池的创建”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#数据库连接池的创建”吧!使用C#数据库连接池连接到数据库服务器通常由几个需要软长时间的步骤组成。必须建立...
    99+
    2023-06-18
  • Python 中创建 PostgreSQL 数据库连接池
    目录习惯于使用数据库之前都必须创建一个连接池,即使是单线程的应用,只要有多个方法中需用到数据库连接,建立一两个连接的也会考虑先池化他们。连接池的好处多多, 1) 如果反复创...
    99+
    2024-04-02
  • mysql怎么创建连接
    建立 mysql 连接需以下步骤:1. 导入 mysql 客户端库;2. 创建连接对象;3. 创建游标对象;4. 执行查询;5. 检索结果;6. 关闭连接。 如何创建 MySQL 连接...
    99+
    2024-04-14
    mysql python
  • 在Python数据库连接池中如何创建请求连接
    在Python数据库连接池中如何创建请求连接,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在Python数据库连接池中操作过程中如果你设置好了连接池,你就可以按...
    99+
    2023-06-17
  • mysql怎么创建新连接
    要创建新的 mysql 连接,需要导入 mysql connector,然后依次创建连接对象、验证连接、创建游标对象、执行查询、检索结果,最后关闭连接。 如何创建新的 MySQL 连接...
    99+
    2024-04-14
    mysql python
  • IDEA2020如何新建spring项目和创建c3p0连接池
    这篇文章将为大家详细讲解有关IDEA2020如何新建spring项目和创建c3p0连接池,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言     &nb...
    99+
    2023-06-20
  • dbeaver连接mysql怎么创建表
    在DBeaver中创建表的步骤如下: 确保已经成功连接到MySQL数据库。如果还没有连接,请点击左上角的“新建连接”按钮,然后选...
    99+
    2024-04-09
    dbeaver mysql
  • sqlite数据库连接池创建要注意什么
    在创建SQLite数据库连接池时,需要注意以下几点: 确保连接池的大小合适,不要设置过大或过小的连接池大小。过大的连接池会占用过...
    99+
    2024-04-09
    sqlite
  • Go如何创建Grpc链接池
    这篇“Go如何创建Grpc链接池”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Go如何创建Grpc链接池”文章吧。常规用法g...
    99+
    2023-07-05
  • 关于node+mysql数据库连接池连接
     mysql有两种连接方式:一种是直接连接 另一种是池化连接,我们这篇讲的是池化连接。 为了让解惑,我简答的写份直接连接的代码,如下: var mysql = requi...
    99+
    2023-05-16
    node+mysql node连接mysql
  • mysql怎么使用连接池
    mysql使用连接池的示例:手动配置连接池。    public void demo1(){       &n...
    99+
    2024-04-02
  • 详解IDEA2020新建spring项目和c3p0连接池的创建和使用
    目录前言 1、环境准备:maven配置2、导入jar包:c3p0-0.9.5.4.jar和mysql-connector-java.jar 3、编写测试类测试连接...
    99+
    2024-04-02
  • 怎么添加mysql连接池的最大连接数
    添加mysql连接池的最大连接数的设置方法:在MYSQL安装目录,找到配置文件 my.ini或my.cnf,打开配置文件,查找max_connections=100 修改为 max_connections=1000,保存,重启MYSQL服务...
    99+
    2024-04-02
  • mysql连接池断掉怎么办
    mysql连接池断掉的解决方法:修改c3p0的配置文件。# Prevent MySQL raise exception after a long idle&nb...
    99+
    2024-04-02
  • DataGrip怎么连接Mysql并创建数据库
    这篇文章主要讲解了“DataGrip怎么连接Mysql并创建数据库”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“DataGrip怎么连接Mysql并创建数据库”吧!一、DataGrip 连接...
    99+
    2023-06-29
  • 开发自定义Mysql连接池
    使用第三方包    https://pypi.python.org/pypi/DBUtils      tar -zxvf *.tar.gz * python3 setup.py build && python3 setup...
    99+
    2023-01-31
    自定义 连接池 Mysql
  • java的mysql连接池怎么写
    利用java编写mysql连接池的方法具体内容如下:public class ConnecionPool {private int size;List connections = new ArrayList();public Conneci...
    99+
    2024-04-02
  • 如何理解MySQL性能优化:长连接、短连接、连接池
    本篇内容介绍了“如何理解MySQL性能优化:长连接、短连接、连接池”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作