1

すべてのエラーを表示するのではなく、MySql データベースが利用できない場合にウェブサイトがダウンしていることを示すページを opencart に表示する簡単な方法があるかどうか疑問に思っていますか?

現在、ホストで MySQL サーバーに問題が発生しており、自分のサイトにアクセスすると大量のエラーが発生します。

警告: mysql_connect() [function.mysql-connect]: xxxxxxxxx/public_html/system/database/mysql.php のソケット '/var/lib/mysql/mysql.sock' (2) を介してローカル MySQL サーバーに接続できません6行目

注意: エラー: 7 行目の /home/flamingl/public_html/system/database/mysql.php で xxxxxxxxxx@localhost を使用してデータベース リンクを作成できませんでした

4

1 に答える 1

0

OpenCart でこれを行う良い方法はありません。とはいえ、ここに汚い方法があります:

ルート ディレクトリに を作成し、maintenance.phpその中に以下を記述します (データベース接続が失敗した場合に読み込まれます)。

<?php
// Tell any crawlers visiting the site that it's currently unavailable
header('HTTP/1.1 503 Service Temporarily Unavailable');
header('Status: 503 Service Temporarily Unavailable');
header('Retry-After: 300');//300 seconds
?>
<html><body>
<h1>Sorry, the website is currently unavailable</h1>
...
...
</body></html>

__constructメソッドを次のように編集/system/database/mysql.phpします。

public function __construct($hostname, $username, $password, $database) {
  if (!$this->link = @mysql_connect($hostname, $username, $password)) {
    exit(include(DIR_SYSTEM . '../maintenance.php'));
  }

  if (!mysql_select_db($database, $this->link)) {
    exit(include(DIR_SYSTEM . '../maintenance.php'));
  }

  mysql_query("SET NAMES 'utf8'", $this->link);
  mysql_query("SET CHARACTER SET utf8", $this->link);
  mysql_query("SET CHARACTER_SET_CONNECTION=utf8", $this->link);
  mysql_query("SET SQL_MODE = ''", $this->link);
}
于 2013-11-10T00:20:52.040 に答える