我怎么检查我的数据库是活着的?

时间:2012-07-03 14:12:54

标签: php zend-framework zend-db

在我的zf应用程序中,我有基本模型类Application_Model,它连接到db并在注册表中存储连接。 代码的一部分:

$db = Zend_Db::factory($registry['config']->$databaseAlias->db->adapter, $registry['config']->$databaseAlias->db->config->toArray());
        $db -> query('SET NAMES ' . $registry['config']->$databaseAlias->db->config->setnames);
        $db -> setFetchMode(Zend_Db::FETCH_OBJ);
        Zend_Registry::set('db', array($databaseAlias=>$db));

如果关闭mysql服务器,$db -> query('SET NAMES ' . $registry['config']->$databaseAlias->db->config->setnames);会抛出异常。那不是我想要的。 我想以某种方式检查,如果我的数据库死了 - 做一些动作; 有没有办法这样做?

2 个答案:

答案 0 :(得分:3)

你可以在db调用周围抛出一个try / catch,如果它进入catch,你可以执行你想要的操作

try
{
    $db = Zend_Db::factory(
        $registry['config']->$databaseAlias->db->adapter,
        $registry['config']->$databaseAlias->db->config->toArray()
    );
    $db -> query('SET NAMES ' . $registry['config']->$databaseAlias->db->config->setnames);
    $db -> setFetchMode(Zend_Db::FETCH_OBJ);
    Zend_Registry::set('db', array($databaseAlias=>$db));
} catch( \Exception $e ) {
    // Database query failed, do logic here
}

答案 1 :(得分:1)

使用try / catch Block进行试验和错误! http://php.net/manual/en/language.exceptions.php