データベースに接続しようとすると、次のエラーが発生します。
警告: mysqli::mysqli() [mysqli.mysqli]: (HY000/2002): /homez.640 のソケット '/var/run/mysqld/mysqld.sock' (2) を介してローカル MySQL サーバーに接続できません/connelho/www/uea/includes/database.php 行 8 MySQL への接続に失敗しました: (2002) ソケット '/var/run/mysqld/mysqld.sock' を介してローカル MySQL サーバーに接続できません (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を見て、ホスティング プロバイダーにメールを送信したところ、スクリプトを確認するように言われました。スクリプトが適切に実行された場合に発生するはずです。」数週間は問題なく動作していましたが、突然接続できなくなりました。私はサイトの唯一の訪問者です。
データベース クラスの接続と切断の例:
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;
}
今日から 1 日、自分のサイトに接続できません。接続の有効期限が切れるまでどのくらいかかりますか? それらを手動で切断するにはどうすればよいですか? リクエストの最後にPHPがデータベース接続を自動的に閉じると思いましたか?