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
Libérer: 2023-03-01 07:54:01
original
5100 Les gens l'ont consulté

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

}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal