mahone 发表于 2011-11-16 23:25:46

让ci的mysqli库支持connect_timeout

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行
function db_pconnect()
        {
                return $this->db_connect();
        }长连接没有用?直接调用短连接去连?很好奇。。。算是bug还是故意这样?




mahone 发表于 2011-11-17 19:03:58

没人看贴?omg。。。

Hex 发表于 2011-11-17 19:11:16

打开长连接有时候会造成很大问题。。。呵呵

mahone 发表于 2011-11-17 19:15:01

Hex 发表于 2011-11-17 19:11 static/image/common/back.gif
打开长连接有时候会造成很大问题。。。呵呵

说的是。。。但是ci的默认的配置就是长连接。。。
但是他的pconnect又是直接调connect,有点坑爹的味道。。。
还有,ci的mysqli不支持timeout,其实是可以支持的。。。这个也比较疑惑。。。

Hex 发表于 2011-11-18 11:38:43

mahone 发表于 2011-11-17 19:15 static/image/common/back.gif
说的是。。。但是ci的默认的配置就是长连接。。。
但是他的pconnect又是直接调connect,有点坑爹的味道。 ...

我看了一下代码,mysql 驱动是有调用 pconnect 的,不知道你的是什么版本。
我的是 2.0.2

mahone 发表于 2011-11-18 19:26:42

Hex 发表于 2011-11-18 11:38 static/image/common/back.gif
我看了一下代码,mysql 驱动是有调用 pconnect 的,不知道你的是什么版本。
我的是 2.0.2
...

mysql驱动是对的,我说的是mysqli,mysqli的pconnect不对,直接调connect。我原来看的是2.0.3,不过不管2.0.2还是2.0.3,都是一样,mysqli库都有问题

Hex 发表于 2011-11-20 13:35:09

mahone 发表于 2011-11-18 19:26 static/image/common/back.gif
mysql驱动是对的,我说的是mysqli,mysqli的pconnect不对,直接调connect。我原来看的是2.0.3,不过不管2 ...

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

看了一下相关资料,说的是 mysqli 里删除了 pconnect,因为这个会带来更多的问题。
页: [1]
查看完整版本: 让ci的mysqli库支持connect_timeout