首頁 >php框架 >Swoole >swoole怎麼做mysql連線池

swoole怎麼做mysql連線池

尚
原創
2020-01-09 16:07:212546瀏覽

swoole怎麼做mysql連線池

連線池定義:永遠不會斷開,要求我們的這個程式是一個常駐記憶體的程式。資料庫連線池(Connection pooling)是程式啟 動時建立足夠的資料庫連接,並將這些連接組成一個連接池,由程式動態地對池中的連接進行申請,使用,釋放。

實作連接池的方法:

同步阻塞模式:

可基於swoole的AsyncTask模組實作的連接池,程式設計簡單,沒有數據同步和鎖的問題。甚至可以多個服務共享連線池。缺點是: 1. 彈性不如多執行緒連線池,無法動態增減連線 2. 有一次進程間通訊的開銷

協程模式:

可使用channel實作連線池。

建立10個mysql連線範例程式碼:

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2018/11/20
 * Time: 14:12
 */
//编写mysql连接池,这个类只能被实例化一次(单例)
class MysqlConnectionPool
{
    private static $instance;//单例对象
    private $connection_num = 10;//连接数量
    private $connection_obj = [];

    //构造方法连接mysql,创建20mysql连接
    private function __construct()
    {
        for($i=0;$i<$this->connection_num;$i++){
            $dsn = "mysql:host=127.0.0.1;dbnane=swoole";
            $this->connection_obj[] =  new Pdo($dsn,&#39;root&#39;,&#39;rootmysql123&#39;);
        }
    }
    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(&#39;0.0.0.0&#39;,8000);
//当浏览器链接点这个http服务器的时候,向浏览器发送helloworld
$serv->on(&#39;request&#39;, function($request,$response){
    //$request包含这个请求的所有信息,比如参数
    //$response包含返回给浏览器的所有信息,比如helloworld

    //(2.3)向浏览器发送helloworld
    $response->end("hello world");
});
//启动http服务器
$serv->start();

效果

swoole怎麼做mysql連線池

#建議學習: swoole教學

################################################################ #

以上是swoole怎麼做mysql連線池的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn