1.在配置文件设置属性
webb/config/main.php中添加persistent或者attributes属性
'components'=>array(
// 数据库配置 TO Mysql
'dsnMyBD'=>array(
'class'=>'CDbConnection',
'connectionString' => 'mysql:host=127.0.0.1;port=3306;dbname=my_db',
'tablePrefix' => 'pre_',
'emulatePrepare' => true,
'username' => 'root',
'password' => '123456',
'charset' => 'utf8',
'persistent' => true, //长连接
// 'attributes' => array(PDO::ATTR_PERSISTENT => true), //长连接
),
.........
);
2.检测是否成功启用长连接
可以调用frameworkdbCDbConnection.php下的getPersistent()函数,返回true为启用成功,false为启用失败。
例如:/web/protected/controllers/TestController.php
public function actionList()
{
$oQues = MyBD::model();
var_dump($oQues->getPersistent());
}
备注:
- 如果使用了长连接而长期没有对数据库进行任何操作,那么在timeout值后,mysql
server就会关闭此连接,而客户端在执行查询的时候就会得到一个类似于“MySQL server has gone away“这样的错误。 -
首先作为超级用户登录到MYSQL,注意必须是超级用户,否则后面会提示没有修改权限。然后输入
show global variables like 'wait_timeout';
mysql长连接和短连接的问题