PHP超时运行MSSQL SP

时间:2014-01-03 15:43:57

标签: php sql-server

我正在尝试使用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运行它。

任何帮助都会很棒。

谢谢!

2 个答案:

答案 0 :(得分:3)

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

  

PDO::setAttribute

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

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

答案 1 :(得分:-2)

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

功能
set_time_limit(0);

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

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

希望这有帮助!