关于php pdo连接mysql,查询超时问题
来源:互联网 发布:苹果cms定时规则 编辑:程序博客网 时间:2024/05/16 11:59
很少写博客,格式不好,见谅。
首先问题是这样发现的,
我在php项目使用到了 workerman,这是一个 常驻内存的cli模式下的socket开发包。(非常给力!)
然后有时候task进程或无故卡死,并不报错,然后就是整个服务瘫痪。
最后发现是通过PDO链接MYSQL进行查询的时候,不知道怎么的,反正就是不报错,又阻塞了!(反正是数据库的锅,因为太不稳定了)
于是就想实现query timeout。
之后查阅了很多文档,自己也做过很多测试。
PDO有个参数ATTR_TIMEOUT:
PDO::ATTR_TIMEOUT: Specifies the timeout duration in seconds. Not all drivers support this option, and its meaning may differ from driver to driver. For example, sqlite will wait for up to this time value before giving up on obtaining an writable lock, but other drivers may interpret this as a connect or a read timeout interval.
尝试了该参数,发现在win和linux上都无效。大家可以再试试 给我反馈哈。
之后就是mysqlnd扩展参数了,我这边是装的有,于是就改了php.ini的配置:
mysqlnd.net_read_timeout = 5
这个确实能生效,而且也测试了 只是querysql的时间,不包含db连接的时间,如果超时异常会从execute抛出。
但是这个事全局生效的,我的业务要求高实时,但是其他的业务可能允许几十秒的sql。
因此这个配置不能用。
最终mysql我建议还是改到mysqli
那里面有
$mysqli
->options(MYSQL_OPT_READ_TIMEOUT, 3);
$mysqli
->options(MYSQL_OPT_WRITE_TIMEOUT, 1);
mysql底层的read会重试两次,一共三次。
此处引用自 http://blog.csdn.net/heiyeshuwu/article/details/5869813
参数不生效是php5.3之后 已经没用libmysql了。
--------------------------------------
上面的mysqli 今天在公司没测试完,但是好像不行。mysqli只有一个连接超时参数,并没有查询超时。
最好的办法还是 通过curl超时去调用。curl的超时返回false 比较好判断。
----------再后续2016-9-24------------------
不甘心通过curl调用的方式,因此找到了解决办法。
mysql有async模式,可以在query的时候计时并自主断开连接。
我昨天写了个类库,准备看看如果没有类似的话,丢到git上给大家用。
----------相应的实现---------------------
http://blog.csdn.net/wwaayyaaa/article/details/52671792
- 关于php pdo连接mysql,查询超时问题
- php PDO连接MySql
- php PDO连接mysql
- php mysql PDO 查询操作
- php pdo 连接MySQL数据库
- php pdo连接mysql数据库
- MYSQL 连接超时问题
- mysql连接超时问题
- MySql连接超时问题
- php pdo 简单连接数据库、查询
- 关于php中使用odbc或者pdo连接sqlserver时如果查询条件中存在中文会导致查询失败的问题
- 在php使用PDO类查询Mysql
- php使用PDO连接mysql数据库
- PHP--使用PDO连接Mysql数据库
- php pdo连接mysql必须扩展
- PHP学习笔记:PDO连接MySQL
- php使用PDO的方式连接mysql
- 关于MySQL的wait_timeout连接超时问题报错解决方案
- openZoosUrl还可以这么玩
- QQ的第三登录授权完获得信息
- 简单总结下OPENCV访问像素值的方法
- 懒人收藏1
- 如何使用DOM创建XML
- 关于php pdo连接mysql,查询超时问题
- JTA事物
- 108. Convert Sorted Array to Binary Search Tree
- 接上篇简单的Memcache应用
- IntelliJ IDEA 教程 - 常用快捷键总结
- 关于object转换类型
- 适配器模式的用例
- 解决adb无法连接手机问题
- 个别VC6.0+用vs2012打开后调试提示系统找不到文件