Тайм-аут PHP, выполняющий MSSQL SP
Я пытаюсь запустить хранимую процедуру MSSQL из PHP с помощью PDO. Я делаю это все время, но с этим 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.
Любая помощь будет большой.
Спасибо!
Ответы
Ответ 1
Вы должны иметь возможность настроить таймаут с помощью PDO.
public bool PDO::setAttribute ( int $attribute , mixed $value )
PDO::ATTR_TIMEOUT
: Указывает продолжительность таймаута в секундах. Не все драйверы поддерживают эту опцию, и это значение может отличаться от драйвера к драйверу. Например, sqlite будет ожидать значения до этого значения, прежде чем отказаться от получения блокировки, доступной для записи, но другие драйверы могут интерпретировать это как промежуток времени ожидания подключения или чтения.
Ответ 2
Если ваша проблема связана с таймаутом, вы можете использовать функцию set_time_limit
set_time_limit(0);
Если вы передадите ноль функции, не накладывается лимит времени.
Кроме того, убедитесь, что вы закрываете все соединения после их использования.
Надеюсь на эту помощь!