我正在运行一个与数据库建立连接的 php gearman worker。但是,问题是大约 8 小时后,mysql 连接断开,我的 worker 崩溃了。因此,我想断开连接并再次建立与数据库的新连接。
我正在使用 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 断开连接并重新连接到我的数据库?
最佳答案
尝试查看跟踪日志,我很确定它实际上关闭了连接,但随后在执行查询时在 CDbConnection->createCommand()
中重新打开它。
关于php - 在 Yii 中重置 CDbConnection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17137536/