2013-08-01 77 views
0

這裏是PHP代碼爲例進行到MySQL的連接,並使用ADODB執行選擇查詢:MySQL和ADODB5 - 最大連接

include('adodb.inc.php'); # load code common to ADOdb 
$db = &ADONewConnection('mysql'); 
$db->PConnect("localhost", "root", "password", "database"); 
$recordSet = &$conn->Execute('select * from products'); 
if (!$recordSet) 
     print $conn->ErrorMsg(); 
else 
while (!$recordSet->EOF) { 
     print $recordSet->fields[0].' '.$recordSet->fields[1].'<BR>'; 
     $recordSet->MoveNext(); 
} 

$recordSet->Close(); # optional 
$conn->Close(); # optional 
?> 

我是否必須使用

$db = &ADONewConnection('mysql'); 
$db->PConnect("localhost", "root", "password", "database"); 

$recordSet->Close(); # optional 
$conn->Close(); # optional 

每次我想做一個查詢來確定max_connection的錯誤達到了嗎?

我如何管理1000個用戶或更多用戶連接到我的網站與MySQL的max_connection = 100?

+0

你需要更少的php進程/線程,然後是最大連接數。 – Vatev

+0

我認爲你應該考慮使用[native PDO driver](http://php.net/manual/fr/book.pdo.php)。 ADODB有點陳舊,[看起來不是非常積極的維護](http://phplens.com/adodb/change.log.html)。 – RandomSeed

回答

1

當達到最大連接數時,您的$db->PConnect應拋出異常或返回錯誤代碼(我不太瞭解該驅動程序,請檢查手冊頁)。您必須觀看此錯誤並在出現錯誤時採取相應措施。通常,等待幾秒鐘,並在向用戶返回錯誤之前再次嘗試幾次。

現在,max_connection併發連接的限制。連接到您的應用程序的1000個用戶(希望)不是同時運行查詢,所以您應該安全一段時間。在腳本執行結束時,所有連接都將關閉(或返回到您的案例中的池),並可供其他用戶使用。因此,除非100個用戶實際上同時點擊應用程序中的某個鏈接,否則無法達到100的限制。

但是,您應該編寫腳本,以便它們在執行過程中儘可能遲地打開(或獲取)連接,並儘早關閉(或釋放)連接。這樣,連接的持續時間越短越好,因此不太可能達到極限。

現在,如果您達到極限,那麼除了增加極限外,您無能爲力。唯一的解決方法是將超出的連接請求擱置(如我在第一段中所建議的那樣)。