php - 在 Yii 中重置 CDbConnection

标签 php mysql yii

我正在运行一个与数据库建立连接的 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/

相关文章:

php - 改善我的 PHP 用户交互

php - 带有 Silex PHP : good choice? 的 RESTful 网络服务

MYSQL求助,如何统计结果

mysql - 同一张表上多个连接的性能

php - 如何创建更快的 jQuery 自动完成

php - Yii 多页面表单向导最佳实践

php - 如何使用php比较文件中的两个mysql表结构

active-directory - 使用 PHP 脚本更改 Active Directory 用户密码

php - YII:将数据从 Controller 传递到小部件?

php - 即使从具有 Yii2 行为的 matchCallback 返回 false 时也设置自定义 denyCallback