在我的采埃孚应用程序中,我有基本模型类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);
抛出异常。 这不是我想要的。实际上,我想以某种方式检查,如果我的数据库死了 - 做一些操作;有什么办法吗?
您可以在数据库调用周围抛出一个 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
}
尝试/捕获块的试错!http://php.net/manual/en/language.exceptions.php