簡體   English   中英

找不到cakephp數據庫

[英]cakephp database not found

我有一個使用cakephp開發的項目,它從不同的數據庫獲取數據,但是如果其中一個數據庫的某些頁面無法打開,則出現以下錯誤:

找不到模型名稱的數據庫表tablenae。

..並且我在此頁面中顯示了可能從其他數據庫顯示的其他數據。

我如何使用Cake確定數據庫是否脫機,並且可以使該模型從另一個地方(如緩存文件)讀取,直到再次啟動數據庫。

也許更好的方法是緩存結果並從緩存中讀取,僅在需要時才訪問數據庫...

<?php
$cacheKey = 'myCacheNumber1';
if (($data = Cache::read($cacheKey)) === false) {
    $data = $this->Model->find('all');
    if ($data) {
        Cache::write($cacheKey, $data);
    }
}
?>

這樣做的問題是,它假定模型和數據庫連接在緩存不存在(或已過期)時可用,如果不存在,您仍然會得到相同的錯誤,但是頻率會當然會減少。

我認為測試數據庫是否完全可用將需要一些自定義代碼技巧,因為蛋糕的核心連接方法假定成功,並且在不可用時嚴重失敗。 我可能會使用標准的PHP connect方法制作一個組件,以控制是否應該嘗試加載模型。

<?php
$cacheKey = 'myCacheNumber1';
if (($data = Cache::read($cacheKey)) === false) {
    if ($this->DbTest->check('hostname','username','password')) {
        $data = $this->Model->find('all');
        if ($data) {
            Cache::write($cacheKey, $data);
        }
    }
}
?>
<?php
// app/controllers/components/db_test.php
class DbTestComponent extends Object { 
    function check($hostname,$username,$password) {
        $result = true;
        $link = @mysql_connect($hostname,$username,$password);
        if (!$link) {
            $result = false;
        }
        @mysql_close($link);
        return $result;
    }
}
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM