在Yii中重置CDbConnection

时间:2013-06-16 20:46:10

标签: php mysql yii

我正在运行一个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断开连接并重新连接到我的数据库?

1 个答案:

答案 0 :(得分:1)

尝试查看跟踪日志,我很确定它实际上会关闭连接,但在执行查询时会在CDbConnection->createCommand()中重新打开它。