2013-08-01 121 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的限制。

但是,您应该编写脚本,以便它们在执行过程中尽可能迟地打开(或获取)连接,并尽早关闭(或释放)连接。这样,连接的持续时间越短越好,因此不太可能达到极限。

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