亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

php實現mysql連接池效果實現代碼

2024-05-05 00:02:05
字體:
來源:轉載
供稿:網友

循環從mysql連接池中獲取連接,不需要重復創建新的連接。

參考配置修改:可以參考下面的文章

防止訪問量過大,把連接數占滿了

<?php/** * @author xuleyan * @title mysql類 */class DbHelper{  //連接池  private $_pools = [];  //連接池大小  const POOLSIZE = 5;  const USERNAME = "root";  const PASSWORD = "root";  const HOST = "127.0.0.1";  const DB = "test";  public function __construct()    {    $db = self::DB;    $username = self::USERNAME;    $password = self::PASSWORD;    $host = self::HOST;    //持久化連接    $presistent = array(PDO::ATTR_PERSISTENT => true);    for ($i=0; $i < self::POOLSIZE; $i++) {       $connection = new PDO("mysql:dbname=$db;host=$host", $username, $password);      // sleep(3);      array_push($this->_pools, $connection);    }  }  //從數據庫連接池中獲取一個數據庫鏈接資源  public function getConnection()  {    echo 'get' . count($this->_pools) . "<br>";    if (count($this->_pools) > 0) {      $one = array_pop($this->_pools);      echo 'getAfter' . count($this->_pools) . "<br>";      return $one;    } else {      throw new ErrorException ( "<mark>數據庫連接池中已無鏈接資源,請稍后重試!</mark>" );    }  }  //將用完的數據庫鏈接資源放回到數據庫連接池  public function release($conn)  {    echo 'release' . count($this->_pools) . "<br>";    if (count($this->_pools) >= self::POOLSIZE) {      throw new ErrorException ( "<mark>數據庫連接池已滿!</mark>" );    } else {      array_push($this->_pools, $conn);      // $conn = null;      echo 'releaseAfter' . count($this->_pools) . "<br>";    }  }  public function query($sql)  {    try {      $conn = $this->getConnection();      $res = $conn->query($sql);      $this->release($conn);      return $res;    } catch (ErrorException $e) {      print 'error:' . $e->getMessage();      die;    }  }  public function queryAll($sql)  {    try {      $conn = $this->getConnection();      $sth = $conn->prepare($sql);      $sth->execute();      $result = $sth->fetchAll();      return $result;    } catch (PDOException $e) {      print 'error:' . $e->getMessage();      die;    }  }}

在另外的文件這樣調用

<?php require_once 'db.php';$sql = 'select * from user';$dbhelper = new DbHelper;for ($i=0; $i < 10; $i++) {   $res = $dbhelper->query($sql);  // var_dump($res) . PHP_EOL;}

ThinkPHP連接MySQL的連接池使用方法

因為一個小bug,導致項目在某個晚上向mysql發送了大量的連接請求,同時mysql服務器的dns出現問題,導致反解超時。最后活活的把mysql服務器拖掛了。

最后bug修復了,并研究了一下增加 mysql連接池的辦法。

這兩天搜了一下,發現ThinkPHP文檔里沒有連接池的相關文檔。所以自己研究了下代碼。

首先: PHP常用的mysql擴展庫有三種 : mysql, mysqli, pdo_mysql.

* mysqli 是不支持連接池的。
* pdo_mysql 支持,但是,thinkPHP的pdo擴展不支持mysql,僅支持:'MSSQL','ORACLE','Ibase','OCI' . ( 見 Pdo.class.php 的第59行)

* mysql 支持,通過方法:mysql_pconnect . (具體參數可以看php官方文檔)

1 使ThinkPHP啟用 長連接的方式是:

class BaseMysql extends Model {  protected $connection = array(    'db_type' => 'mysql',    'db_user' => '***',    'db_pwd' => '*******',    'db_host' => '*******',    'db_port' => '3306',    'db_name' => 'custom',    'db_params' => array('persist' => true),  );}

如果你認為,配置這個就萬事大吉了,那就大錯特錯了。

2 mysql -> my.cnf修改配置:
[mysqld]

interactive_timeout =60 // 交互連接(mysql-client)的過期時間。
wait_timeout =30 // 長連接的過期時間時間。 這個一定要改?。∧J是8個小時。 如果請求量大點,很快連接數就占滿了。
max_connections = 100 //最大連接數,可以認為是連接池的大小

3 php.ini 修改:
[MySql]
mysql.allow_persistent = On
mysql.max_persistent = 99 // 要小于mysql配置的最大連接數
mysql.max_links = 99

4 webserver如果是apache ,需要啟用keep-alive。 否則,一旦請求退出,長連接將無法再重用。
webserver 是nginx的情況:
pm = dynamic // 默認啟動一些子進程,用于處理http請求。
pm.max_children // 最大的子進程數。 這個配置要小于 mysql 的max_connections。

5 如果發現還是不能用,請檢查操作系統的keepalive 是否啟用。

綜述:

需要 keep-alive 和 數據庫長連接同時啟用,否則長連接回白白的占用mysql的連接數資源,而無法重用。
對于 nginx + php-fpm 的情況,其實是保持了 php-fpm 子進程與mysql的長連接。 前端的http請求被分配給哪個 php-fpm子進程,該子進程就重用自己與mysql 的長連接。

上述是一整天的研究結果,不完備的地方,請大家指出,在此先行謝過!


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲视频免费一区| 国产区精品在线观看| 久久亚洲精品国产亚洲老地址| 精品国偷自产在线视频| 国产视频欧美视频| 亚洲a成v人在线观看| 中文字幕无线精品亚洲乱码一区| 亲爱的老师9免费观看全集电视剧| 精品视频在线观看日韩| 法国裸体一区二区| 亚洲r级在线观看| 精品亚洲va在线va天堂资源站| 国产美女精品视频免费观看| 国产在线日韩在线| 亚洲欧美日韩网| 日韩欧美精品在线观看| 欧美孕妇性xx| 久久精品国产亚洲精品2020| 亚洲欧美在线第一页| 亚洲人成电影在线| 日韩av在线精品| 中文字幕综合一区| 欧美日韩日本国产| 亚洲欧美日韩国产成人| 红桃av永久久久| 中文字幕亚洲一区二区三区五十路| 91久久久久久久久久| 国产视频精品一区二区三区| 日韩欧美中文免费| 国产成人精品免费视频| 欧美www视频在线观看| 国产精品成人一区二区| 欧美视频在线观看免费网址| 亚洲精品视频网上网址在线观看| 中文字幕国内精品| 欧美精品一区二区三区国产精品| 国产精品一区二区三区免费视频| 国产精品电影久久久久电影网| 久久久久国产精品www| 亚洲午夜精品久久久久久性色| 欧美日韩视频免费播放| 亚洲天堂男人的天堂| 欧美在线www| 国产91在线播放九色快色| 亚洲精品v欧美精品v日韩精品| 久久精品中文字幕| 国产日本欧美视频| 精品美女永久免费视频| 亚洲欧洲在线观看| 亚洲精品之草原avav久久| 成人网在线视频| 欧美日韩第一视频| 俺去了亚洲欧美日韩| 国产欧美va欧美va香蕉在线| 国产91色在线|免| 成人免费大片黄在线播放| 欧美精品在线视频观看| 欧美老妇交乱视频| 亚洲三级 欧美三级| 亚洲欧美在线x视频| 国产精品91免费在线| 国产成人精品视| 97在线视频国产| 亚洲欧美综合精品久久成人| 中文字幕成人在线| 欧美日韩国产999| 欧美诱惑福利视频| 懂色aⅴ精品一区二区三区蜜月| 91久久国产精品91久久性色| 国产精品第三页| 国产成人av在线播放| 亚洲成avwww人| 国产欧美日韩精品在线观看| 亚洲在线观看视频网站| 亚洲开心激情网| 欧亚精品在线观看| 中文字幕精品www乱入免费视频| 国产精品三级久久久久久电影| 欧美高清第一页| 日韩精品视频在线观看网址| 精品一区电影国产| 国产精品一区电影| 亚洲社区在线观看| 欧美日韩午夜激情| 欧美肥老妇视频| 丁香五六月婷婷久久激情| 国产精品成人一区二区| 亚洲一区二区三区毛片| 蜜月aⅴ免费一区二区三区| 精品毛片网大全| 久久人人97超碰精品888| 国产精品欧美一区二区三区奶水| 欧美激情一区二区三区久久久| 欧美日韩国产成人在线观看| 在线视频精品一| 色偷偷噜噜噜亚洲男人| 亚洲欧美综合图区| 日韩最新中文字幕电影免费看| 在线视频免费一区二区| 日韩的一区二区| 国产精品入口免费视频一| 国产精品一区二区三区在线播放| 亚洲精品国产福利| 久99九色视频在线观看| 欧美日韩在线一区| 欧美激情国内偷拍| 亚洲第一页中文字幕| 中文字幕亚洲激情| 国产亚洲综合久久| 国产性色av一区二区| 国产精品久久av| 欧美亚洲视频一区二区| 亚洲欧美成人一区二区在线电影| 亚洲精品一区二区网址| 亚洲欧美国产精品va在线观看| 欧美电影免费观看大全| 国产精品久久久久久久久久| 久久久亚洲福利精品午夜| 日韩精品黄色网| 亚洲精品久久久久久下一站| 美女精品视频一区| 亚洲aa在线观看| 92看片淫黄大片看国产片| 亚洲成人av片| 亚洲精品成a人在线观看| 一夜七次郎国产精品亚洲| 久久亚洲国产成人| 亚洲第一黄色网| 久久国产色av| 国产欧美欧洲在线观看| 亚洲精品国产精品久久清纯直播| 亚洲аv电影天堂网| 国产国语刺激对白av不卡| 性色av一区二区三区在线观看| 亚洲网在线观看| 国产精品久久久久久亚洲调教| 国产日韩在线播放| 不卡中文字幕av| 97视频免费在线观看| 一区二区三欧美| 亚洲第一综合天堂另类专| 91精品国产91久久久久久吃药| 国产男人精品视频| 成人h猎奇视频网站| 国产日本欧美在线观看| 日韩精品在线免费观看| 久久久久久美女| 国产欧美日韩精品在线观看| 日韩av色在线| 中文字幕亚洲欧美日韩在线不卡| 国产女人精品视频| 亚洲一区二区日本| 中文字幕一区二区精品| 中文字幕精品一区久久久久| 久久久久久久久电影| 日韩性生活视频| 亚洲成人黄色网| 欧美日韩中国免费专区在线看| 欧美日韩国产999| 2019中文字幕在线观看| 国产精品入口日韩视频大尺度| 成人综合网网址| 日韩一区视频在线| 亚洲国产精品女人久久久|