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 に答える