2013-10-28 24 views
1

想知道是否有一個簡單的方法,在opencart顯示一個頁面,說如果MySql數據庫不可用,而不是顯示所有的錯誤,網站是關閉的?Opencart網站向下頁

目前我的主機具有存在的MySQL服務器的問題,當我去我的網站,我收到了一堆錯誤:

警告:mysql_connect()函數[function.mysql-CONNECT]:無法連接到錯誤::無法使數據庫鏈接使用通過插座 '/var/lib/mysql/mysql.sock'(2)在XXXXXXXXX /的public_html /系統/數據庫/上線mysql.php 6

通知本地MySQL服務器xxxxxxxxxx @ localhost在第7行上的/home/flamingl/public_html/system/database/mysql.php

+0

是的,這是可能的。 'index.php'中有一個鉤子,用於檢查*維護模式*是否打開。在你的'index.php'中你應該檢查與數據庫的連接是否成功,如果不是,你應該立即手動切換到維護模式。您可以通過包含維護模式模板和退出運行時來完成此操作。但是我建議只在生產環境中使用該解決方案,在您的本地上您應該明智地考慮可能發生的任何錯誤。 – shadyyx

回答

0

在OpenCart中這樣做並不是一個好方法。這就是說,這裏的骯髒的方式:

創建您的根目錄裏面(如果數據庫連接失敗,這將被載入)以下一個maintenance.php:在/system/database/mysql.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方法是:

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); 
}