【问题标题】:How to set TimeOut for execution the query from PHP Sqlsrv如何设置 TimeOut 以从 PHP Sqlsrv 执行查询
【发布时间】:2018-02-01 11:34:21
【问题描述】:

如何在 SqlSrv PHP 中为 EXEC 查询或存储过程设置 TimeOut

因为我使用 PHP 调用 SQL-Server 存储过程。

例如

"EXEC SP_Name"

有时它花费的时间太长,所以 PHP 页面显示 500 Internal server error。

如果可以设置 SP 停止的时间限制,那么我会显示错误描述等...

我该如何解决这个问题?

提前致谢。

【问题讨论】:

    标签: php sql-server sqlsrv


    【解决方案1】:

    在你的 php.ini 文件集中

    max_execution_time = 60--or whatever time you wish
    

    更多详情请参考Link

    【讨论】:

      【解决方案2】:

      @Jayasurya Satheesh 的答案是指任何 php 执行时间的时间,但不是数据库查询执行时间。实际上 php 缺乏一种简单的方法来控制数据库查询的执行时间。

      更多的是在 DB/SQL 设置方面。如果您可以在 SQL Server 端定义 TimeOut,这将向 PHP 返回“超时”。

      无论如何,您可以定义 set_time_limit(25) (其中 25 是您想要的秒数),您可以在 SQL EXEC 之前将其放在您的 php 代码中,如果您想 set_time_limit 则无需处理 php.ini对于特定的 php 文件。因此,如果查询时间超过 25 秒,php 将停止执行。

      请记住 set_time_limit() 不会影响其他 php 脚本,它仅适用于放置它的当前文件

      【讨论】:

      • 如果有可能在 sqlsrv 连接字符串或执行中设置超时,我尝试了以下代码 $result = sqlsrv_query($conn, $query, $params, array("QueryTimeout" => 30));$conn = sqlsrv_connect($host, array("UID"=>$user, "PWD"=>$pwd, "Database"=>"DBName", "LoginTimeout" =>5)); 它也需要很长时间才能加载。
      • 我想你把这两个陈述的顺序颠倒了,不是吗?首先是 $conn = sqlsrv_connect(...),然后是 sqlsrv_query($conn...) ?
      • 是正确的,我正在使用第一个连接和执行查询
      猜你喜欢
      • 2021-03-08
      • 2014-06-01
      • 1970-01-01
      • 2019-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-05
      • 2011-09-23
      相关资源
      最近更新 更多