Maison >développement back-end >Problème PHP >Comment implémenter un pool de connexions à une base de données en PHP

Comment implémenter un pool de connexions à une base de données en PHP

Guanhui
Guanhuioriginal
2020-05-14 13:08:495099parcourir

Comment implémenter un pool de connexions à une base de données en PHP

Comment PHP implémente-t-il le pool de connexions à la base de données ? Remplissez l'instance de connexion ; définissez enfin une méthode de retrait et une méthode de remise en place. Lors du retrait, la dernière connexion. L'instance du pool de connexions sera extraite de la pile et renvoyée. Une fois remise, l'instance de connexion sera poussée sur la dernière pile du pool de connexions.

Exemple de code :

<?php
namespace Db\Connect;

class Pool
{

  protected $size = 10;

  protected $connects = [];

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

  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[&#39;hostname&#39;],
          $this->dbConf[&#39;username&#39;],
          $this->dbConf[&#39;password&#39;],
          $this->dbConf[&#39;dbname&#39;]
        );

        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);
    }
  }

}

Tutoriel recommandé : "

Tutoriel PHP

"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn