如何在yii1.0.7中设置数据库连接超时?

hi,

我想达到这样的目的:

连接数据库的时候,如果发现数据库挂了(短时间,比如5秒),就停止连接并报异常。

我如何设置这个超时时间呢?我想尝试用 PDO::ATTR_TIMEOUT ,但是不知道 yii框架应该在哪个地方设置?

网上查了几个办法,好像都不好使。

我使用的版本是:1.0.7

http://www.yiiframework.com/doc/api/1.1/CDbConnection#getPdoInstance-detail

CDbConnection::getPdoInstance() 方法可以获取底层的pdo实例 然后试着用原生pdo方法来操作PDO的属性 如果管用的话

建议你复写CDbConnection 类 然后在此方法返回实例前设置超时 这样Yii::app()->db 返回的就是设置过属性的链接了

这个是实例级别的设置 另一个就是复写CWebApplication 类 在getDb()返回前设置 或者其他比如在使用db前统一处理 onBeginRequest,beforeAction,… 之类的设置

已经解决。

继承CDbConnection, 覆盖 init()方法

在 parent::init() 之前设置 $this->setAttribute(PDO::ATTR_TIMEOUT, $this->timeout); 即可。