运行 MSSQL SP 的 PHP 超时



我正在尝试使用PDO从PHP运行MSSQL存储过程。我一直这样做,但是有了这个 SP,它就会超时。SP 相当复杂,运行大约需要 4 分钟。

我是这样称呼它的:

$setDate = '2014-01-03';
$queryMain = $coreDB->prepare("exec sp_ard :runDate");
$queryMain->bindParam("runDate",$setDate);
$queryMain->execute();
$e = $queryMain->errorInfo();
$d = $queryMain->fetchAll(PDO::FETCH_ASSOC);
print_r($e);
print_r($d);

当我运行页面时,它会运行一分钟左右,然后产生此错误:

Array ( [0] => 08S01 [1] => 258 [2] => [Microsoft][SQL Server Native Client 10.0]TCP Provider: Timeout error [258]. ) 

我知道SP工作正常。我可以直接从 MSSQL 管理控制台运行它。从那里运行大约需要 4 分钟,但它工作正常。

我正在尝试弄清楚如何从 PHP 运行它。

任何帮助都会很棒。

谢谢!

您应该能够使用 PDO 配置超时。

PDO::setAttribute

public bool PDO::setAttribute ( int $attribute , mixed $value )

PDO::ATTR_TIMEOUT :指定超时持续时间(以秒为单位)。并非所有驱动程序都支持此选项,其含义可能因驱动程序而异。例如,sqlite 将等待此时间值,然后再放弃获取可写锁,但其他驱动程序可能会将其解释为连接或读取超时间隔。

如果您的问题是超时,您可以使用函数set_time_limit

set_time_limit(0);

如果将零传递给函数,则不会施加时间限制。

此外,请确保在使用后关闭所有连接。

希望这有帮助!

最新更新