Zend Frameworkでトランザクションを使用しようとしていますが、スクリプトが機能しています。
ただし、テスト中、mysqlサーバーが非アクティブであることが原因の例外を除いて、try/catch関数がすべての例外をキャッチすることに気付きました。
これは起こるはずですか?サーバーがクラッシュした場合、醜いZend例外が返され、アプリケーションが正常に失敗しなくなるのではないかと心配しています。
私のコードは次のようになります:
function insertInbox ($userId, $mail_id )
{
$db = Zend_Db_Table::getDefaultAdapter();
$table = new Application_Model_DbTable_Inbox;
try {
$db->beginTransaction();
$data = array (
'user_id' => $userId,
'mail_id' => $mail_id
);
$insertedId[] = $table -> insert($data);
$db -> commit();
return $insertedId;
}
catch(exception $e){
$db->rollback();
return "insert failed";//.$e;
}
}
$tt = insertInbox ( 666,666);
print_r($tt);
同様の例外の重複エントリがキャッチされ、一時的なカスタムエラーメッセージ(挿入に失敗しました)が返されます。しかし、データベースサーバーをオフにすると、phpcatchはこのエラーをキャプチャしません。
**Message:** SQLSTATE[HY000] [2002] No connection could be made because the target machine actively refused it.
どんな考えでもありがたいです。