我正在尝试使用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);
如果将零传递给函数,则不会施加时间限制。
此外,请确保在使用后关闭所有连接。
希望这有帮助!