PHP 怎么限制 mysql 的查询的执行时间

2018-11-07 21:39:19 +08:00
 jojojo
最近发现调用 pdo 执行一条查询时间很长的 mysql 语句(假设 10 分钟)。当 php (假设 php 本身的最大执行时间 30s )执行结束之后,用 show processlist 检查,mysql 查询并没有结束。
想问一下,有什么方法或者配置,可以使 php 执行结束之后,立刻停止 mysql 的执行呢
3825 次点击
所在节点    PHP
6 条回复
Efraim
2018-11-07 23:03:09 +08:00
yangqi
2018-11-07 23:06:15 +08:00
每次查询前
SET SESSION MAX_EXECUTION_TIME=2000;
OMGZui
2018-11-08 09:56:53 +08:00
max_execution_time 可以设置 php 超时,默认 30 秒,设置 0 就是没有限制

你是在浏览器运行 php 的嘛,在 cli 下就没有 30s 的限制了
jojojo
2018-11-08 13:37:09 +08:00
@Efraim 你这样对 mysql=本身也限制了执行时间,我需要的是对 php 查询限制时间,对 mysql 本身不做限制
jojojo
2018-11-08 14:14:08 +08:00
@yangqi 大佬这方法应该可行,但是我刚看了下,我用 docker 装的 mysql 下并没有这个 max_excution_time 或者 max_statement_time,这就很尴尬了
Evilk
2018-11-08 16:19:51 +08:00
如果一条 SQL 需要 10 分钟,难道不应该首先从这里入手吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/505543

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX