3

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

4

1 回答 1

1

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

于 2013-06-16T22:12:19.663 回答