首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Coding
V2EX  ›  PHP

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

  •  
  •   jojojo · 2018-11-07 21:39:19 +08:00 · 1634 次点击
    这是一个创建于 399 天前的主题,其中的信息可能已经有所发展或是发生改变。
    最近发现调用 pdo 执行一条查询时间很长的 mysql 语句(假设 10 分钟)。当 php (假设 php 本身的最大执行时间 30s )执行结束之后,用 show processlist 检查,mysql 查询并没有结束。
    想问一下,有什么方法或者配置,可以使 php 执行结束之后,立刻停止 mysql 的执行呢
    6 回复  |  直到 2018-11-08 16:19:51 +08:00
        1
    Efraim   2018-11-07 23:03:09 +08:00
        2
    yangqi   2018-11-07 23:06:15 +08:00
    每次查询前
    SET SESSION MAX_EXECUTION_TIME=2000;
        3
    OMGZui   2018-11-08 09:56:53 +08:00
    max_execution_time 可以设置 php 超时,默认 30 秒,设置 0 就是没有限制

    你是在浏览器运行 php 的嘛,在 cli 下就没有 30s 的限制了
        4
    jojojo   2018-11-08 13:37:09 +08:00
    @Efraim 你这样对 mysql=本身也限制了执行时间,我需要的是对 php 查询限制时间,对 mysql 本身不做限制
        5
    jojojo   2018-11-08 14:14:08 +08:00
    @yangqi 大佬这方法应该可行,但是我刚看了下,我用 docker 装的 mysql 下并没有这个 max_excution_time 或者 max_statement_time,这就很尴尬了
        6
    Evilk   2018-11-08 16:19:51 +08:00   ♥ 1
    如果一条 SQL 需要 10 分钟,难道不应该首先从这里入手吗?
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1384 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 17:38 · PVG 01:38 · LAX 09:38 · JFK 12:38
    ♥ Do have faith in what you're doing.