php-cp(php-connect-pool)是用php擴充寫的一個資料庫連接池。
一、它不同於市面上其他的開源資料庫中間件產品
1、它不需要單獨部署中間件集群,是跑在應用程式伺服器上的代理程式,減少了一層外部依賴,使得架構更加簡單、清爽、可靠。
2、效能更高,減少了一次網路傳輸,它透過高效的ipc方式和php進程通信,並且避免了協定解析的消耗。
3、同時支援redis和mysql,不需要部署2套單獨的中間件系統。
二、簡單原理圖
#三、技術特性
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中文網其他相關文章!