开发者

Cakephp - detect if unable to connect to database and recover gracefully

I have a few sites built with Cakephp. If any of these sites lose their connection to the database for whatever reason it does not handle it well. Basically it renders itself inside itself trying to display an error over and over until the browser crashes. The rendering itself inside itself is caused by the use of requestAction from elements.

What I want to know is 开发者_运维问答how can I check if the database connection exists

I tried this in the app_controller before filter:

if(!ConnectionManager::getDataSource('default'))
 {
  die(); //this will be a message instead
 }

but it does not seem to work.

Thanks


Use the following code:

<?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;
?>

Here I'm printing messages (in those tags). You can replace the echo line with die().


(Cakephp 3.x) Just follow the example given in PagesController's Home view:

Basically it is:

    use Cake\Datasource\ConnectionManager;

    try {
        $connection = ConnectionManager::get('yourconnection');
        $connected = $connection->connect();
    } catch (Exception $connectionError) {
        //Couldn't connect
    }
    //connected
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜