温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

php 数据库连接池怎么实现?

发布时间:2020-05-15 23:21:33 来源:亿速云 阅读:295 作者:Leah 栏目:编程语言

php 数据库连接池怎么实现?针对这个问题,今天小编总结这篇有关数据库连接池的文章,希望帮助更多想学习数据库的同学找到更加简单易行的办法。

首先定义一个类并声明一个属性作为连接池子;然后在构造方法中向池子进行填充连接实例;最后再定义一个取出方法和放回方法,取出时将连接池最后一个连接实例进行出栈并返回,放回时将连接实例压入连接池末栈即可。

实例代码:

<?php
namespace Db\Connect;

class Pool
{

  protected $size = 10;

  protected $connects = [];

  protected $dbConf = [
    'hostname' => '127.0.0.1',
    'username' => 'root',
    'password' => '123456',
    'dbname' => 'dbname'
  ];

  public function __construct($size = 10, $dbConf = [])
  {
    $this->size = $size;

    $this->dbdbConf = array_merge($this->dbdbConf, $dbdbConf);

    for($index = 1; $index <= $this->size; $index ++) {

        $connect = mysqli_connect(
          $this->dbConf['hostname'],
          $this->dbConf['username'],
          $this->dbConf['password'],
          $this->dbConf['dbname']
        );

        array_push($this->connects, $connect);
    }
  }

  public function getConnect()
  {
    if (count($this->connects) <= 0) {
        throw new \ErrorException( "数据库连接池中已无链接资源,请稍后重试!" );
    } else {
        return array_pop($this->connects);
    }

  }

  public function release($connect)
  {
    if (count($this->connects) >= $this->size) {
      throw new \ErrorException("数据库连接池已满");
    } else {
      array_push($this->connects, $connect);
    }
  }

}

以上就是实现数据库连接池的具体内容,代码详细清楚,如果在日常工作遇到这个问题,希望你能通过这篇文章解决问题。如果想了解更多相关内容,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI