gpt4 book ai didi

php - 从 sqlsrv_query 更改 QueryTimeout

转载 作者:行者123 更新时间:2023-12-04 16:31:09 25 4
gpt4 key购买 nike

我遇到了运行缓慢的查询问题,有时需要超过 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);

我的理解是我需要在 sqlsrv_connect 中将超时详细信息作为参数传递,但我的语法不正确。

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

最佳答案

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

Key: QueryTimeout
Value: A positive integer value
Description: Sets the query timeout in seconds. By default, the driver will wait indefinitely for results.
(emphasis mine)

来源:Options parameter - sqlsrv_query (php.net)


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

要解决此错误,您可以更改 php.ini 文件中的 max_execution_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 是您希望查询运行的最长时间(以秒为单位)。

关于php - 从 sqlsrv_query 更改 QueryTimeout,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38476969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com