我想嘗試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」) ;