用户
 找回密码
 入住 CI 中国社区
搜索
查看: 5207|回复: 6
收起左侧

[讨论/交流] 让ci的mysqli库支持connect_timeout

[复制链接]
发表于 2011-11-16 23:25:46 | 显示全部楼层 |阅读模式
php去连数据库,有mysql和mysqli两种方式。我发现几个问题
1.mysql方式,是不支持connect_timeout参数的。我去连,一直等了180秒财报错。。。
2.mysqli方式,支持connect_timeout,但是我看了ci的mysqli_driver的代码,好像还是没有提供这个功能。可能是为了兼容不同的环境。。。具体我不清楚,请大家讨论。。。我将ci代码稍微改了下,支持这个参数,更新代码在附件中,大家可以对比下原来代码,稍微改了一下。。。配置文件里不配置的话,默认是5s
3.疑问:ci mysqli库,system/database/drivers/mysqli/mysqli_driver.php 86行
PHP复制代码
function db_pconnect()
        {
                return $this->db_connect();
        }
复制代码
长连接没有用?直接调用短连接去连?很好奇。。。算是bug还是故意这样?

patch.rar (5.44 KB, 下载次数: 18)


评分

参与人数 1威望 +5 收起 理由
Hex + 5 赞一个!

查看全部评分

 楼主| 发表于 2011-11-17 19:03:58 | 显示全部楼层
没人看贴?omg。。。
发表于 2011-11-17 19:11:16 | 显示全部楼层
打开长连接有时候会造成很大问题。。。呵呵
 楼主| 发表于 2011-11-17 19:15:01 | 显示全部楼层
Hex 发表于 2011-11-17 19:11
打开长连接有时候会造成很大问题。。。呵呵

说的是。。。但是ci的默认的配置就是长连接。。。
但是他的pconnect又是直接调connect,有点坑爹的味道。。。
还有,ci的mysqli不支持timeout,其实是可以支持的。。。这个也比较疑惑。。。
发表于 2011-11-18 11:38:43 | 显示全部楼层
mahone 发表于 2011-11-17 19:15
说的是。。。但是ci的默认的配置就是长连接。。。
但是他的pconnect又是直接调connect,有点坑爹的味道。 ...

我看了一下代码,mysql 驱动是有调用 pconnect 的,不知道你的是什么版本。
我的是 2.0.2
 楼主| 发表于 2011-11-18 19:26:42 | 显示全部楼层
Hex 发表于 2011-11-18 11:38
我看了一下代码,mysql 驱动是有调用 pconnect 的,不知道你的是什么版本。
我的是 2.0.2
...

mysql驱动是对的,我说的是mysqli,mysqli的pconnect不对,直接调connect。我原来看的是2.0.3,不过不管2.0.2还是2.0.3,都是一样,mysqli库都有问题
发表于 2011-11-20 13:35:09 | 显示全部楼层
mahone 发表于 2011-11-18 19:26
mysql驱动是对的,我说的是mysqli,mysqli的pconnect不对,直接调connect。我原来看的是2.0.3,不过不管2 ...

我看了一下官方手册,确实没有 mysqli_pconnect()。
所以,这里 CI 写的没问题。

看了一下相关资料,说的是 mysqli 里删除了 pconnect,因为这个会带来更多的问题。

点评

按照hex说的,去查了下资料,了解了。。。多谢hex。。。  发表于 2011-11-20 13:52

本版积分规则