【发布时间】:2012-06-09 01:34:23
【问题描述】:
我的应用程序将托管在共享托管服务提供商中,Mysql 并发连接数限制为 25 个。下面是我连接数据库的代码
function dbConnect() {
$dbHost = 'localhost';
$dbUser = 'user';
$dbPass = 'pass';
$dbName = 'dbase';
mysql_connect($dbHost, $dbUser, $dbPass)or die(mysql_error());
mysql_select_db($dbName) or die(mysql_error());
}
我的应用程序更多的是数据库查询。仅主页就有至少 20 个 mysq_query。我编写主页的方式如下所示
include 'config.php';
dbConnect();
query1 ... //获取初始变量
导致多个查询的过程变量
query2... // 处理结果
query3...// 处理结果
等等直到....
查询20...//处理结果
我不能再最小化查询,因为大多数查询是其他查询的先决条件。我预计每天至少有 1000 个用户,并且 50% 的用户可能会同时连接或至少相隔几秒钟。
- 在连接数据库的设计上,我是否可以轻松达到设置的连接限制?
- php 在查询后立即关闭连接,这意味着它在第一次查询后关闭,然后在第二次打开并在之后再次关闭,依此类推,即使我自己没有关闭连接李>
- 我的假设是否正确,即上述场景自动消耗了 20 个并发连接?
提前致谢。
【问题讨论】:
-
使用PDO(也就是说,如果它在您的服务器上提供)。不要使用
mysql_函数(mysqli_家族比那些稍好)。 -
对于通过系统的每个请求(至少)有 20 个查询,如果可能,您需要在请求的会话中缓存请求者(用户)可缓存的数据库存储数据,而不是为每个单独的请求重新查询要求。希望您的数据架构不是经过设计的,因此您不能这样做。
-
希望您能够利用connection pooling。
-
@JaredFarrish 我是数据库设计的新手,是的,如果需要,大部分结果都会放在 SESSION 上,但我仍然需要更多的连接来填充 SESSION。
-
看看我的链接和
mysql_pconnect()。如果你真的会有 500 个并发用户,也许 100-150 个并发请求,所有这些操作都在服务器上来满足请求,并且服务器是共享主机?嗯。嗯。