我正在运行一个php gearman worker,它建立了与数据库的连接。然而,问题是大约8小时后,mysql连接断开连接,我的工作人员崩溃了。所以,我想断开连接并重新建立与数据库的新连接。
我正在使用CDbConnection连接到Yii中的数据库,并且期待“setActive(false)”为我做这个技巧。在下面我是“明确断开连接”并进行数据库查询....期望我的查询抛出一个异常,但我很惊讶地看到“setActive”根本没有影响,我的查询成功。
//if it fails then reconnect to the database
Yii::app()->db->setActive(false);
try {
$model = MyModel::model()->findByPk(10);
var_dump($model);
} catch (exception $e) {
echo "got exception -- ".$e->getMessage()."\n";
Yii::app()->db->setActive(false);
Yii::app()->db->setActive(true);
// I also tried Yii::app()->db->active = true/false
$model = MyModel::model()->findByPk(10);
var_dump($model);
}
如何使用CdbConnection断开连接并重新连接到我的数据库?
答案 0 :(得分:1)
尝试查看跟踪日志,我很确定它实际上会关闭连接,但在执行查询时会在CDbConnection->createCommand()
中重新打开它。