views:

315

answers:

1

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

+1  A: 

Hi, 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().

Ashok
Thank you very much
Phantz