首頁  >  文章  >  後端開發  >  php有資料庫連線池嗎

php有資料庫連線池嗎

王林
王林原創
2019-10-10 11:52:315135瀏覽

php有資料庫連線池嗎

php-cp(php-connect-pool)是用php擴充寫的一個資料庫連接池。

一、它不同於市面上其他的開源資料庫中間件產品

1、它不需要單獨部署中間件集群,是跑在應用程式伺服器上的代理程式,減少了一層外部依賴,使得架構更加簡單、清爽、可靠。

2、效能更高,減少了一次網路傳輸,它透過高效的ipc方式和php進程通信,並且避免了協定解析的消耗。

3、同時支援redis和mysql,不需要部署2套單獨的中間件系統。

二、簡單原理圖

php有資料庫連線池嗎

#三、技術特性

1、支援最大最小連線數配置。

2、支援壓力小自動回收連接(力道和頻率可設定)。

3、支援平滑重啟。

4、支援連接用光的排隊機制。

5、同時支援mysql和redis。

6、使用簡單,框架簡單整合後(修改new 方法),現有業務一行程式碼都不用改即可用上連接池。

7、提供了get_disable_list函數,來獲得不可用的宕機ip列表,這樣負載平衡也可以做在客戶端(設定檔全部的ip和宕機ip做差集,然後再隨機即可)。

btw:你也可以用lvs,但是lvs轉送在系統架構上引入了依賴,dr模式不能跨網段又限制了擴容,而且後端db出問題只能知道lvs的vip。

8、連接池進程會啟動ping進程來監聽宕機列表,如果可用會反映到get_disable_list函數的返回值上.

9、做了大量優化,雖然請求經過連接池進程轉發,但是基本上無qps損耗。

四、如何使用

1、把pool.ini檔案放到 /etc/ 並按需修改裡面的設定。

2、啟動代理程式 

./pool_server start

支援 "start" "stop" "restart" "reload"指令

3、修改php腳本

$db = new PDO(xxxxx);
修改成  $db = new pdo_connect_pool(xxxx);//dont use persistent
$redis = new Redis();
修改成 $redis = new redis_connect_pool();//dont use pconnect

提示:

儘早呼叫$db/$redis->release() 來釋放這個程序佔用的連接到池子裡面。

推薦教學:PHP影片教學

#

以上是php有資料庫連線池嗎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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