база данных cakephp, не найденная

У меня есть разработанное использование проекта cakephp, который получает данные из другого DBS, но если одна из базы данных тезисов некоторые страницы не открывает и дает мне следующую ошибку:

Таблица базы данных tablenae для модели moedlname не была найдена.

.. и у меня есть на этой странице другие данные, отображенные от другой базы данных, которые работают, вероятно.

как я могу определить, использует ли база данных офлайн пирог, и я могу сделать эту модель прочитанной из другого места как файл кэша, пока база данных не запускается снова.

8
задан OMG Ponies 8 June 2010 в 16:34
поделиться

1 ответ

Возможно, лучший подход - кэшировать результаты и читать из кеша, обращаясь к базе данных только при необходимости ...

<?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;
    }
}
?>
2
ответ дан 6 December 2019 в 01:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: