PHP PDO或MySQL中是否有一项功能在执行超过2秒时自动中止并返回空结果集?
找到了一些搜索并没有找到任何帮助。我认为这可能对用户体验很有帮助,特别是对于那些不那么重要的简单统计数据。
尝试在PHP中提出一种方法,但不确定如何监视PDO:execute()
尚未返回时的执行时间。
有什么想法吗?
答案 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。