當我嘗試連接到我的數據庫時出現以下錯誤。無法連接到數據庫,連接太多
警告:mysqli的:: mysqli的()[mysqli.mysqli]:(HY000/2002):無法通過套接字 '/var/run/mysqld/mysqld.sock' 連接 到本地MySQL服務器( 2) in /homez.640/connelho/www/uea/includes/database.php第8行失敗 連接到MySQL:(2002)無法連接到本地MySQL服務器 通過套接字'/ var/run /的mysqld/mysqld.sock」(2)
我一直運行下面的連接方法之前,我做任何SQL查詢:
public static function connect() {
require_once("constants.php");
$mysqli = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME);
if ($mysqli->connect_errno) {
die("Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error);
}
return $mysqli;
}
我始終運行任何SQL查詢後,以下斷開連接方法:
public static function disconnect($mysqli = NULL, $stmt = NULL) {
if (isset($mysqli)) {
$mysqli->close();
}
if (isset($stmt)) {
$stmt->close();
}
}
我已經看過https://stackoverflow.com/a/2499660並通過電子郵件發送我的託管服務提供商,他們告訴我要檢查我的腳本「我們有30個MySQL連接作爲限制 - 我們無法調整,並且如果腳本正常運行,沒有理由應該發生。「它工作正常好幾個星期,然後突然停止連接。我是該網站的唯一訪問者。
例爲我的數據庫類如何連接和斷開:
public static function county_select() {
//connect to database
$mysqli = Database::connect();
//write sql statement
$sql = "SELECT id, county FROM Counties ORDER BY country, county ASC";
//prepared statement, stage 1: prepare
if (!($stmt = $mysqli->prepare($sql))) {
die("Prepare failed: (" . $mysqli->errno . ") " . $mysqli->error);
}
//prepared statement, stage 2: execute
if (!$stmt->execute()) {
die("Execute failed: (" . $stmt->errno . ") " . $stmt->error);
}
//prepared statement, stage 3: bind result
if (!$stmt->bind_result($id, $county)) {
die("Binding result failed: (" . $stmt->errno . ") " . $stmt->error);
}
$counties = array();
//prepared statement, stage 5: fetch
while ($stmt->fetch()) {
$counties[] = array("id" => $id, "county" => $county);
}
//disconnect from database
Database::disconnect($mysqli, $stmt);
return $counties;
}
我一直無法立即連接到我的網站一天。連接到期多久?我如何手動斷開它們?我以爲PHP會自動在請求結束時自動關閉數據庫連接?
'show processlist;'在mysql監視器中會顯示所有活動連接。你可以使用'kill'來終止任何不需要的連接。 – 2013-02-27 22:00:41