У меня есть несколько сайтов, созданных с Cakephp. Если какой-либо из этих сайтов теряет их соединение с базой данных по любой причине, это не обрабатывает его хорошо. В основном это представляет себя в себе пытающийся отобразить ошибку много раз до катастрофических отказов браузера. Рендеринг себя в себе вызывается при помощи requestAction от элементов.
То, что я хочу знать, - то, как может я проверять, существует ли соединение с базой данных
Я попробовал это в app_controller перед фильтром:
if(!ConnectionManager::getDataSource('default'))
{
die(); //this will be a message instead
}
но это, кажется, не работает.
Спасибо
Используйте следующий код:
<?php
$filePresent = true;
if (!file_exists(CONFIGS.'database.php')):
echo '<span class="notice-failure">Database configuration file is not present. Please contact admin@website</span>';
$filePresent = false;
endif;
if ($filePresent!=false):
uses('model' . DS . 'connection_manager');
$db = ConnectionManager::getInstance();
@$connected = $db->getDataSource('default');
if (!$connected->isConnected()):
echo '<p><span class="notice-failure">Not able to connect to the database. Please contact admin@website</span></p>';
endif;
endif;
?>
Здесь я печатаю сообщения (в этих тегах). Вы можете заменить эхо-строку на die ().