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

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

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

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