Heim >Backend-Entwicklung >PHP-Problem >So implementieren Sie einen Datenbankverbindungspool in PHP

So implementieren Sie einen Datenbankverbindungspool in PHP

Guanhui
GuanhuiOriginal
2020-05-14 13:08:495100Durchsuche

So implementieren Sie einen Datenbankverbindungspool in PHP

Wie implementiert PHP die Verbindungsinstanz und definiert beim Herausnehmen die letzte Verbindung? Die Instanz des Verbindungspools wird aus dem Stapel entfernt und zurückgegeben. Beim Zurücksetzen wird die Verbindungsinstanz auf den letzten Stapel des Verbindungspools verschoben.

Beispielcode:

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

}

Empfohlenes Tutorial: „

PHP-Tutorial

Das obige ist der detaillierte Inhalt vonSo implementieren Sie einen Datenbankverbindungspool in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn