1

只是想知道如果 MySql 数据库不可用而不是显示所有错误,那么在 opencart 中是否有一种简单的方法来显示一个说明网站已关闭的页面?

目前我的主机在使用 MySQL 服务器时遇到问题,当我访问我的站点时,出现了一堆错误:

警告:mysql_connect() [function.mysql-connect]: Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) in xxxxxxxxx/public_html/system/database/mysql.php在第 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 回答