当MySQL查询耗时超过X秒时,PHP PDO执行中止?
PHP PDO或MySQL中是否有一个功能,当执行时间超过(比如)2秒时,会自动中止并返回一个空结果集 做了一些搜索,没有找到任何有用的东西。我认为这对于用户体验来说可能是非常好的,尤其是对于那些无关紧要的统计数据 试图在PHP中找到一种方法来实现这一点,但不确定如何在未返回时监视当MySQL查询耗时超过X秒时,PHP PDO执行中止?,php,mysql,pdo,Php,Mysql,Pdo,PHP PDO或MySQL中是否有一个功能,当执行时间超过(比如)2秒时,会自动中止并返回一个空结果集 做了一些搜索,没有找到任何有用的东西。我认为这对于用户体验来说可能是非常好的,尤其是对于那些无关紧要的统计数据 试图在PHP中找到一种方法来实现这一点,但不确定如何在未返回时监视PDO:execute()的执行时间 有什么想法吗?您可以通过我的设置PDO::ATTR\U TIMEOUT来完成此操作,如下所示: $db = new PDO( "mysql:host=$host;dbnam
PDO:execute()
的执行时间
有什么想法吗?您可以通过我的设置PDO::ATTR\U TIMEOUT来完成此操作,如下所示:
$db = new PDO(
"mysql:host=$host;dbname=$dbname",
$username,
$password,
array(
PDO::ATTR_TIMEOUT => 10
)
);
这会导致10秒后超时。MySQL中有一个名为
MAX\u EXECUTION\u TIME
的全局变量。您可以设置:
SET GLOBAL MAX_EXECUTION_TIME = 1200;
或者您可以使用PDO库的ATTR_TIMEOUT
选项,单位为秒(手动)
PDO::ATTR_TIMEOUT:以秒为单位指定超时持续时间。并非所有驱动程序都支持此选项,其含义可能因驱动程序而异。例如,sqlite将在放弃获取可写锁之前等待此时间值,但其他驱动程序可能会将其解释为连接或读取超时间隔。需要整数
你试过了吗?手册没有说明这是否适用于查询,但您可以尝试一下。您也可以尝试一下~但这也会影响到必须花费时间才能完成的重要查询?如何将其还原为原始值?是的。或者您可以使用
设置会话最大执行时间=1200
指定要使用此类超时的会话您是否测试过此功能?手册(或答案完全相同的链接问题)不清楚这是否适用于查询或仅适用于connection@Phil为此,我在自己的代码中使用了它。所以,是的,它已经过“测试”。我没有访问发问者的数据库,我是否没有办法根据他的具体实现来测试它。我的意思是你测试过它以检查长时间运行的查询超时吗?@Phil,是的。在我自己的代码中,我使用它自动超时长查询。这确实会导致我在某些时候暂停。那么会发生什么呢?它会抛出异常还是什么?