我有使用cakephp开发的项目,它从不同的数据库中获取数据,但如果其中一个数据库某些页面未打开并给我以下错误:
找不到模型moedlname的数据库表tablenae。
..我在这个页面中显示了从其他数据库中显示的其他数据。
我如何确定数据库是否使用cake脱机,我可以从另一个地方读取此模型,如缓存文件,直到数据库再次启动。
答案 0 :(得分:2)
也许更好的方法是缓存结果并从缓存读取,只在需要时点击数据库......
<?php
$cacheKey = 'myCacheNumber1';
if (($data = Cache::read($cacheKey)) === false) {
$data = $this->Model->find('all');
if ($data) {
Cache::write($cacheKey, $data);
}
}
?>
这个问题是它假设模型和数据库连接在缓存不存在(或已经过期)时可用,如果不存在,你仍然会得到相同的错误,但是频率肯定会降低。
我认为测试数据库是否可用将需要一些自定义代码技巧,因为连接的蛋糕核心方法假设成功并且在不可用时大量失败。我可能会使用标准的PHP连接方法创建一个组件来控制是否应该尝试加载模型。
<?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;
}
}
?>