我有一个小博客,每分钟有超过400名在线访问者。
由于需要很多连接请求,我在可能时使用持久连接重用它,这是我的连接类:
<?php
class DatabaseConnection {
var $currCon;
public function connect() {
require_once '/config.php';
try {
$this->currCon = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_DATABASE, DB_USER, DB_PASSWORD, array(
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8",
PDO::ATTR_PERSISTENT => true
));
} catch (Exception $e) {
header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Status: 503 Service Temporarily Unavailable');
header('Retry-After: 300');
die("Can't connect to MySQL database<br />: " . $e);
}
}
public function disconnect() {
// Unused for PERSISTENT connections
// $this->currCon = null;
// unset($this->currCon);
}
public function getDatabaseConnection() {
return $this->currCon;
}
}
?>
问题是我收到很多错误,说 连接太多 ,这很有趣,因为我使用的是持久连接模型!
此外,我更改了MySQL
服务配置并将max_connection
值从150增加到500,但问题仍然存在!
如何避免此错误的任何想法!?
答案 0 :(得分:1)
制作
PDO::ATTR_PERSISTENT => FALSE
这很可能就足够了。
还要确保仅调用DatabaseConnection :: connect() ONCE
答案 1 :(得分:0)
在这种类型的应用程序中,更好的方法是根本不使用持久连接。如果MySQL服务器在同一台机器上,那么持久连接的好处很小。