PHP里mysqlnd.net_read_timeout和default_socket_timeout的区别?

发布于 2022-09-12 13:22:50 字数 1118 浏览 25 评论 0

在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 after default_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_timeoutdefault_socket_timeout这2个配置项有什么关系和区别?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文