我想尝试db连接来检查db是否可用。在zend中,我可以将我的代码放在boostrap文件中并将其包装在try catch中。在yii中是否有zend bootstrap模拟?
如何在yii中实现这个? 是在yii类似的zend boostrap?
UPD:分贝是蒙戈,警予extention与DB工作是directmongosuite
我想尝试db连接来检查db是否可用。在zend中,我可以将我的代码放在boostrap文件中并将其包装在try catch中。在yii中是否有zend bootstrap模拟?
如何在yii中实现这个? 是在yii类似的zend boostrap?
UPD:分贝是蒙戈,警予extention与DB工作是directmongosuite
似乎我找到合适的解决方案:
需要禁止自动在配置文件连接:
'分量'=>数组( 'EDMS'=>数组( '类' =>'EDMSConnection', 'dbName'=>'homeweb', 'server'=>'mongodb:// localhost:27017', 'options'=> array('connect'=> false) ) )
所有控制器都应该扩展一个自定义控制器(例如BaseController
)。
需要编写自己的public function beforeAction
方法,我可以添加boostrap代码。
class BaseController extends CController
{
public $layout = '//layouts/main';
public $navigationMenu = array();
public $breadcrumbs = array();
public function beforeAction($action)
{
try {
Yii::app()->edmsMongo()->connect();
} catch (Exception $e) {
die('Cannot connect to the database server. Please Try again later.');
}
$isGuest = Yii::app()->user->isGuest;
$this->navigationMenu = $this->_getNavigationMenu($isGuest);
return parent::beforeAction($action);
}
在beforeAction
方法需要添加return true
或执行父母的方法。
在警予的引导是非常下的index.php文件的public_html或yiic.php文件(命令行应用程序)。
您可能需要单独创建应用程序实例并运行它(默认情况下,它同时在1行上),因此您可以在调用之间执行try/catch操作。
只是尝试获取应用程序组件,蒙戈插件将抛出一个异常,如果它不能打开的连接:
try
{
Yii::app()->mongoDb;
}
...
或Yii的应用::() - > getComponent(“的MongoDB”) ;