【问题标题】:dynamically change mysqli connection timeout in PHP在 PHP 中动态更改 mysqli 连接超时
【发布时间】:2011-01-04 08:29:11
【问题描述】:

如何使用 PHP 动态更改 MySqli 连接超时?我找到了以下手册,您可以在打开连接后设置一个选项,但它说它只支持自 PHP 5.3.1 起的 Windows:

http://www.php.net/manual/en/mysqli.options.php

我用的是PHP5.2.4,MySQLi(改进版)

my.cnf 中的默认连接超时为 20 秒,但在一个特殊的 php 脚本中,我想在超时前将其设置为更高,例如 500 秒。

【问题讨论】:

  • 手动输入在我心里有点模糊。这也可能意味着,它可以在任何地方工作,但只能在 Windows 上使用 PHP 5.3.1 或更高版本。你在Linux机器上吗?可以试试吗?

标签: php mysql timeout connection mysqli


【解决方案1】:
$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 500)

manual

但是,从 php 到 mysql 的连接不是资源密集型的。恕我直言,最好减少超时并建立多个连接。这样做会为其他进程释放连接。

【讨论】:

  • 他的问题(据我所知)是这在他的 Windows 服务器上不起作用,因为他使用的是 PHP
  • 我同意,我所有的正常连接都会有 20 秒的超时。但是这个特定的脚本需要很长时间才能运行,有时 mysql 连接会长时间闲置,这就是为什么我需要更长的连接来处理这个脚本
  • @Yada,您为什么要发布问题已经声明不起作用的解决方案?我们如何让它在 Windows
【解决方案2】:

mysqli 的正确解决方案是在打开连接后立即发出以下查询将session.wait_timeout 更改为更长:

SET @@session.wait_timeout=500

【讨论】:

    【解决方案3】:

    对于造成的混乱,我深表歉意,但我使用的是 Linux 服务器,而不是 Windows。我误解了PHP docs“自 PHP 5.3.1 起在 Windows 上支持 TCP/IP”中的注释,我认为这意味着该选项仅在 Windows 服务器上受支持。

    好的,所以

    $mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 500);
    

    对我来说非常适合。

    谢谢

    【讨论】:

    • 编辑您的问题并将您放置的内容放在这里,那里:)
    • 你为什么在这个线程上发布两个答案?!您应该“合并”它们并删除其中一个。
    猜你喜欢
    • 2015-01-03
    • 2011-02-25
    • 1970-01-01
    • 2017-07-01
    • 2018-12-21
    • 1970-01-01
    • 1970-01-01
    • 2012-11-10
    • 2018-05-16
    相关资源
    最近更新 更多