[英]Is the following the right way to implement database connection pool for Pear DB?
據我所知沒有連接在PHP集中在PHP連接池 ,目前我們正在使用PEAR DB。
我有一個遺留的cron作業代碼,該代碼使用pear DB連接。
while (true) {
...
foreach ($keys as $key) {
$connection_string = get_connection_string_based_on_key($key);
$DB = & \DB::connect($connection_string);
...
// Avoid resource leakage.
$DB->disconnect();
}
}
我們意識到DB::connect
確實為我們提供了一些性能熱點。 我打算建立一個偽連接池
$pool = array();
while (true) {
...
foreach ($keys as $key) {
$connection_string = get_connection_string_based_on_key($key);
if (array_key_exists ($connection_string, $pool) {
$DB = $pool[$connection_string];
} else {
$DB = & \DB::connect($connection_string);
$pool[$connection_string] = $DB;
}
...
// No $DB->disconnect(); As we want the
// DB connection remains valid inside the pool.
}
}
Cron工作可能會持續幾天,幾周或幾個月。 我想知道,這樣的偽連接池后面是否有陷阱? 例如,
這不是有關您的PHP代碼的問題。 必須在數據庫系統中配置連接超時和最大同時連接數。
使用mysql時:
連接: http : //www.electrictoolbox.com/update-max-connections-mysql/
超時: 通過python連接時,如何更改默認的Mysql連接超時?
我認為connect_timeout = 0意味着mysql數據庫將嘗試保持連接盡可能長的打開時間。 據我所知,沒有用於無限連接(相對於系統資源)的配置選項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.