Подтвердить что ты не робот

Тайм-аут 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.

Любая помощь будет большой.

Спасибо!

4b9b3361

Ответ 1

Вы должны иметь возможность настроить таймаут с помощью PDO.

PDO:: setAttribute

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

PDO::ATTR_TIMEOUT: Указывает продолжительность таймаута в секундах. Не все драйверы поддерживают эту опцию, и это значение может отличаться от драйвера к драйверу. Например, sqlite будет ожидать значения до этого значения, прежде чем отказаться от получения блокировки, доступной для записи, но другие драйверы могут интерпретировать это как промежуток времени ожидания подключения или чтения.

Ответ 2

Если ваша проблема связана с таймаутом, вы можете использовать функцию set_time_limit

set_time_limit(0);

Если вы передадите ноль функции, не накладывается лимит времени.

Кроме того, убедитесь, что вы закрываете все соединения после их использования.

Надеюсь на эту помощь!