我正在探索在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();
这可能吗?
理想的实施方式:
- 在PHP代码内部,而不是通过MySQL服务器的配置
- 只能对选定的查询实现,而不能对所有查询实现
- 在MySQL 5.6及更高版本上工作(最低)
- 可以通知最终用户,例如
这个过程比预期的要长。尝试将数据集拆分为分段。
参考此
http://mysqlserverteam.com/server-side-select-statement-timeouts/
对于只读SELECT语句
SELECT
MAX_STATEMENT_TIME = 2000 --in milliseconds
*
FROM table;