为MySQLi查询执行设置超时



我正在探索在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. 可以通知最终用户,例如

这个过程比预期的要长。尝试将数据集拆分为分段。

参考此

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

对于只读SELECT语句

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

相关内容

  • 没有找到相关文章

最新更新