这是我第一次问一个问题就在这里。 我已经冲刷谷歌,计算器等,寻找与我遇到的问题的帮助。 目前,我们正在使用PHP 5.3.10和MySQL 5.0.95与Apache 2.2.21(CentOS的)。
我们在开始从旧的MySQL库削减了在新的代码库MySQLi的过程中,我领导负责。 我试过了
- 确保我明确地关闭数据库连接时,我用它做
- 释放的结果集时,我要和他们一起做
- 正在增加从150的连接限制到250
有包含文件(具有会话检查等做)使用老式mysql_pconnect()来验证某些事情。 这些都包含在几乎所有的我们的代码。
类似的代码:
$mysqli = new mysqli('p:'.DBHOST, DBUSER, DBPASS, $_SESSION['dbname']);
if ($mysqli->connect_error) {
throw new Exception($mysqli->connect_error, $mysqli->connect_errno);
exit;
}
// do my stuff here, a bunch of SQL queries like:
$sql = 'SELECT * FROM MyTable';
$result = $mysqli->query($sql);
if (!$result) {
throw new SQLException($sql, $mysqli);
exit;
// SQLException is an extension to mysqli_sql_exception that adds the
// query into the messaging internally
}
while ($result && $row = $result->fetch_assoc()) {
// do stuff here, like show it on screen, etc., all works normally
}
$result->free(); // free up the result
$mysqli->close(); // close the connection to the database
释放的结果和关闭连接中的事情,我得到一个“太多的连接”的错误之后做了。 在这之前,我想每一个我跑我的程序时获得3-4新的数据库连接。 (与SHOW PROCESSLIST后端看去)
该问题在一定程度上减轻了(将其添加0〜3的新连接,而不是每次3个新连接)。
我的一些阅读的建议,这可能有一些做与Apache线程+添加如果在当前线程没有现有闲置那些新的持久连接。 是不是这样? 是持久连接不做mysqli的支持呢? (我应该放弃对持久性?)
感谢您的任何建议。