Php 从sqlsrv\u查询更改QueryTimeout

Php 从sqlsrv\u查询更改QueryTimeout,php,sql-server,sqlsrv,query-timeout,Php,Sql Server,Sqlsrv,Query Timeout,我遇到了一个运行缓慢的查询问题,有时执行该查询需要30秒以上,因此我希望增加我的sqlsrv_查询超时 Fatal error: Maximum execution time of 30 seconds exceeded 我的PHP语法有问题,因为:中的示例对我来说没有意义 当前我的连接/设置如下所示: $testServer = 'IP\servername,PORT'; $testDetails = array('Database' => 'DBNAME', 'UID' =>

我遇到了一个运行缓慢的查询问题,有时执行该查询需要30秒以上,因此我希望增加我的sqlsrv_查询超时

Fatal error: Maximum execution time of 30 seconds exceeded
我的PHP语法有问题,因为:中的示例对我来说没有意义

当前我的连接/设置如下所示:

$testServer = 'IP\servername,PORT';
$testDetails = array('Database' => 'DBNAME', 'UID' => 'USERNAME', 'PWD' => 'Password');
$testConnect = sqlsrv_connect($testServer, $testDetails);
我的理解是,我需要将timout细节作为
sqlsrv_connect
中的参数传递,但我的语法不正确


(我已经尽可能地优化了查询,不幸的是,考虑到db表的设计,我无法在30秒内使其一致返回。)

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

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

资料来源:


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

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

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
是您希望查询运行的最长时间(以秒为单位)。

非常感谢您的全面回答!(甚至包括sqlsrv_查询语法位)我修改了我的php.ini,我的问题已经解决了。“array(“QueryTimeout”=>30)”为我解决了类似的问题。谢谢。增加设置时间限制(300);对于运行昂贵数据库查询的php代码来说,这是一个解决方案,它“修复”了我在一个缓慢、陈旧且脾气暴躁的服务器上的php脚本中遇到的另一个类似超时问题。