【问题标题】:Setting a timeout for MySQLi query execution为 MySQLi 查询执行设置超时
【发布时间】:2016-02-26 12:17:11
【问题描述】:

我正在探索在 PHP 和 MySQLi 中设置超时/停止特定查询的可能性。

来自 php.net 的稍微修改的示例:

if ($stmt = $mysqli->prepare("INSERT NESTED MYSQL QUERY HERE.")) {
    $stmt->bind_param("s", $city);
    $stmt->execute();
    $stmt->set_timeout("50000"); //hypothetical, will not work
    $stmt->bind_result($district);
    while($stmt->fetch()){ 
        //to do
    }
}
$mysqli->close();

这可能吗?

理想的实现:

  1. 在 PHP 代码中,而不是通过 MySQL 服务器的配置
  2. 只能对选定查询而非所有查询实施
  3. 在 MySQL 5.6 及更高版本上工作(至少)
  4. 可以通知最终用户,例如

该过程花费的时间比预期的要长。尝试将您的数据集拆分为 段。

【问题讨论】:

标签: php mysql mysqli timeout


【解决方案1】:

参考这个

http://mysqlserverteam.com/server-side-select-statement-timeouts/

对于只读的 SELECT 语句

SELECT 
MAX_STATEMENT_TIME = 2000 --in milliseconds
* 
FROM table;

【讨论】:

  • 文档说:这个选项是在 MySQL 5.7.4 中添加的。它在 MySQL 5.7.8 中被删除。 低版本呢?
猜你喜欢
  • 2011-09-23
  • 1970-01-01
  • 1970-01-01
  • 2010-10-20
  • 2019-02-07
  • 1970-01-01
  • 2016-08-18
  • 1970-01-01
  • 2016-06-20
相关资源
最近更新 更多