MySql和ADODB5 - 最大连接数

时间:2013-08-01 12:01:15

标签: php mysql caching adodb

以下是使用adodb连接mysql并执行select查询的php代码示例:

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连接到我的网站,我该怎么办?

1 个答案:

答案 0 :(得分:1)

当达到最大连接数时,$db->PConnect应抛出异常或返回错误代码(我不太了解此驱动程序,请查看手册页)。您必须观察此错误并在出现错误时采取相应措施。通常,请等待几秒钟,然后再次尝试几次,然后再向用户返回错误。

现在,max_connection并发连接的限制。连接到您的应用程序的1000个用户(希望)不会同时运行查询,因此您应该安全一段时间。在脚本执行结束时,所有连接都将关闭(或在您的情况下返回到池中),并可供其他用户使用。因此,除非100个用户实际在应用程序的某个链接上同时点击,否则您将无法达到100的限制。

但是您应该编写脚本,以便在执行过程中尽可能晚地打开(或获取)连接,并尽早关闭(或释放)连接。这样,连接保持的时间跨度尽可能短,使其不太可能达到极限。

现在,如果你达到了极限,那么除了增加限制外,你无能为力。唯一的解决方法是暂停超出连接请求(正如我在第一段中所建议的那样)。