0

这是一个连接到 mysql 并使用 adodb 执行选择查询的 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 连接到我的网站时,我该如何管理?

4

1 回答 1

1

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

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

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

现在,如果您确实达到了限制,那么您只能增加限制。唯一的解决方法是暂停超过连接请求(正如我在第一段中建议的那样)。

于 2013-08-01T15:54:25.577 回答