当前位置:  开发笔记 > 编程语言 > 正文

从sqlsrv_query更改QueryTimeout

如何解决《从sqlsrv_query更改QueryTimeout》经验,为你挑选了1个好方法。

我遇到运行缓慢的查询问题,有时执行时间超过30秒,因此我希望增加sqlsrv_query超时.

Fatal error: Maximum execution time of 30 seconds exceeded

我的PHP语法有问题,例如:http://php.net/manual/en/function.sqlsrv-query.php对我来说没有意义.

目前我的连接/设置如下:

$testServer = 'IP\servername,PORT';
$testDetails = array('Database' => 'DBNAME', 'UID' => 'USERNAME', 'PWD' => 'Password');
$testConnect = sqlsrv_connect($testServer, $testDetails);

我的理解是我需要通过作为参数传递timout细节,sqlsrv_connect但我没有得到正确的语法.

(我已经尽可能地优化了查询,不幸的是,考虑到db表的设计,我无法在不到30秒的时间内始终如一地返回.)



1> ImClarky..:

此错误实际上是PHP错误,与sqlsrv驱动程序无关; 默认情况下,sqlsrv驱动程序将运行查询,直到收到结果.

键:QueryTimeout
值:正整数值
描述:以秒为单位设置查询超时.默认情况下,驱动程序将无限期地等待结果.
(强调我的)

来源:选项参数 - sqlsrv_query(php.net)


错误是php.ini文件中定义的max_execution_time - 默认为30秒.当脚本运行超过30秒时,解析器终止脚本,抛出致命错误.

要解决此错误,您可以更改max_execution_timephp.ini文件中的设置,或者在脚本顶部添加:

ini_set("max_execution_time", value); //The value will only be changed for this script!

哪里value是最大的时间以秒为你想要的脚本来运行.


正如您的问题是询问为查询设置超时,其语法将是:

$result = sqlsrv_query($conn, $query, $params, array("QueryTimeout" => 30));

同样,这30是您希望查询运行的最长时间(以秒为单位).

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有