[英]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.