PHP里mysqlnd.net_read_timeout和default_socket_timeout的区别?
在PHP里,如果想限制一个SQL语句的最长执行时间,可以通过配置php.ini
里的mysqlnd.net_read_timeout
的值来实现,经测试,配置mysqlnd.net_read_timeout = 10
后,执行一个时间超过10秒的语句,PHP确实会超时报错。但如果配置的是default_socket_timeout = 10
,PHP并不会报错,看起来mysql的读写超时并不受default_socket_timeout
参数控制。
但是PHP文档里(链接)的描述是:
PHP, by default, sets a read timeout of 60s for streams. This is set via php.ini,default_socket_timeout
. This default applies to all streams that set no other timeout value.mysqlnd
does not set any other value and therefore connections of long running queries can be disconnected afterdefault_socket_timeout
seconds resulting in an error message 2006 - MySQL Server has gone away.
描述里说SQL语句执行时间超过default_socket_timeout
的话,PHP会报错,文档描述跟实际测试情况不一样,令我比较迷惑。
问题:
1)mysql会不会受default_socket_timeout
的影响?
2)mysqlnd.net_read_timeout
和default_socket_timeout
这2个配置项有什么关系和区别?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论