很少写博客,格式不好,见谅。
首先问题是这样发现的,
我在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扩展参数了