簡體   English   中英

從sqlsrv_query更改QueryTimeout

[英]Changing QueryTimeout from sqlsrv_query

我遇到了一個緩慢運行的查詢的問題,該查詢有時需要花費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但語法不正確。

(我盡可能地優化了查詢,不幸的是,鑒於數據庫表的設計,我無法在不到30秒的時間內使查詢一致地返回。)

該錯誤實際上是PHP錯誤,與sqlsrv驅動程序無關。 默認情況下,sqlsrv驅動程序將運行查詢,直到接收到結果為止。

關鍵:QueryTimeout
值:正整數值
說明:以秒為單位設置查詢超時。 默認情況下,驅動程序將無限期等待結果。
(強調我的)

來源: Options參數-sqlsrv_query(php.net)


錯誤是在php.ini文件中定義的max_execution_time-默認為30秒。 當腳本運行30秒鍾以上時,解析器將終止腳本,並引發致命錯誤。

要解決此錯誤,您可以更改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是您要運行查詢的最長時間(以秒為單位)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM