0

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

$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);抛出异常。那不是我想要的。实际上我想以某种方式检查,如果我的数据库死了 - 做一些动作;有什么办法吗?

4

2 回答 2

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
}
于 2012-07-03T14:15:17.370 回答
1

使用 try/catch 块进行反复试验! http://php.net/manual/en/language.exceptions.php

于 2012-07-03T14:15:39.307 回答