我计划通过包括在每一个数据库处理程序脚本的顶部下面的代码使用mysqli的持续连接:mysqli中的持久连接如何工作?
$db = new mysqli('p:localhost', 'db_user', 'db_user_pass', 'db_name');
if($db->connect_errno > 0){
die('Unable to connect to database [' . $db->connect_error . ']');
}
的优点我在这里看到的是,我的web应用程序将使用只用一个连接即使有10,000个并发用户,mysql服务器也不会显示“太多连接”错误。但是,由于任何脚本(或同一脚本的不同实例)都将只有一个用于所有数据库调用的mysql持久连接,所以SQL查询将排队,而不是被数千个并行mysql连接处理。
首先,如果我不正确地理解事情,请纠正我。其次,如果我是对的,我该如何解决这个问题。一方面是“太多连接”问题(如果我不使用持久连接),另一方面是“查询排队”问题(如果我使用持久连接)。
“查询排队”完全没有问题。 – 2014-09-06 19:03:44
但为什么呢?是否即使我创建1000个mysql连接并请求1000个并行查询,MySQL会一次处理一个查询? – iamlegend 2014-09-06 19:06:01
如果您有一个持久连接,则只有一个连接并请求1000个并行查询。 MySQL将始终从请求的进程返回请求查询的结果(是的,对于每个访问者都有一个webserver/php进程)。 – 2014-09-06 19:13:34