当MySQL查询超过X秒时,PHP PDO执行中止?

时间:2017-10-25 03:18:23

标签: php mysql pdo

PHP PDO或MySQL中是否有一项功能在执行超过2秒时自动中止并返回空结果集?

找到了一些搜索并没有找到任何帮助。我认为这可能对用户体验很有帮助,特别是对于那些不那么重要的简单统计数据。

尝试在PHP中提出一种方法,但不确定如何监视PDO:execute()尚未返回时的执行时间。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

你可以这样做我的设置PDO :: ATTR_TIMEOUT,如下所示:

$db = new PDO(
    "mysql:host=$host;dbname=$dbname", 
    $username, 
    $password,
    array(
      PDO::ATTR_TIMEOUT => 10
    )
  );

这会导致10秒后超时。

答案 1 :(得分:1)

MySQL中有一个名为MAX_EXECUTION_TIME的全局变量。您可以设置:

SET GLOBAL MAX_EXECUTION_TIME = 1200;

或者您可以使用PDO库的ATTR_TIMEOUT选项,单位为秒(手动here)。

  

PDO :: ATTR_TIMEOUT:指定超时持续时间(以秒为单位)。并非所有驱动程序都支持此选项,其含义可能因驱动程序而异。例如,在放弃获取可写锁之前,sqlite将等待达到此时间值,但其他驱动程序可能会将此解释为连接或读取超时间隔。需要int。