天天看點

swoole連接配接mysql_swoole怎麼做mysql連接配接池

swoole連接配接mysql_swoole怎麼做mysql連接配接池

連接配接池定義:永不斷開,要求我們的這個程式是一個常駐記憶體的程式。資料庫連接配接池(Connection pooling)是程式啟

動時建立足夠的資料庫連接配接,并将這些連接配接組成一個連接配接池,由程式動态地對池中的連接配接進行申請,使用,釋放。

實作連接配接池的方法:

同步阻塞模式:

可基于swoole的AsyncTask子產品實作的連接配接池,程式設計簡單,沒有資料同步和鎖的問題。甚至可以多個服務共享連接配接池。缺點是: 1. 靈活性不如多線程連接配接池,無法動态增減連接配接 2. 有一次程序間通信的開銷

協程模式:

可使用channel實作連接配接池。

建立10個mysql連接配接示例代碼:<?php

//編寫mysql連接配接池,這個類隻能被執行個體化一次(單例)

class MysqlConnectionPool

{

private static $instance;//單例對象

private $connection_num = 10;//連接配接數量

private $connection_obj = [];

//構造方法連接配接mysql,建立20mysql連接配接

private function __construct()

{

for($i=0;$iconnection_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();

效果

swoole連接配接mysql_swoole怎麼做mysql連接配接池