Установка времени ожидания для pdo_mssql в Zend - PullRequest
1 голос
/ 12 сентября 2011

У меня один или два запроса, выполнение которых занимает ~ 10 минут.

Как мне манипулировать объектом $ db для включения тайм-аутов?

$_SESSION['params'] = array(
 'host'           => '127.0.0.1',
 'username'       => 'sa',
 'password'       => 'password',
 'dbname'         => 'schema',
 'driver_options'        => $options
);
$db = createConnection($_SESSION['params']);

function createConnection( $params){
    return Zend_Db::factory('Pdo_MSsql', $params);
}

1 Ответ

1 голос
/ 12 сентября 2011

Я не знаком с адаптером PDO_MSSQL, но согласно документации, вы можете использовать параметр driver_options, чтобы добавить определенные параметры к адаптеру. Смотрите пример № 7 в http://framework.zend.com/manual/en/zend.db.adapter.html#zend.db.adapter.connecting.parameters

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

EDIT:

Кажется, есть атрибут PDO::ATTR_TIMEOUT. Согласно документации PHP:

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

EDIT2:

Кажется, есть собственный атрибут для драйвера pdo_mssql. Согласно этой записи в блоге :

Разработчики могут установить тайм-аут запроса с помощью PDO :: SQLSRV_ATTR_QUERY_TIMEOUT для каждого соединения и для каждого оператора и использовать его для обеспечения лучшего взаимодействия с пользователем в своих приложениях.

Надеюсь, это поможет,

...