在zend中将超时设置为pdo_mssql

时间:2011-09-12 11:42:19

标签: php zend-framework zend-db

我有一两个查询需要大约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 个答案:

答案 0 :(得分:1)

我不熟悉PDO_MSSQL适配器,但根据文档,您可以使用driver_options参数向适配器添加特定选项。请参阅http://framework.zend.com/manual/en/zend.db.adapter.html#zend.db.adapter.connecting.parameters

中的示例#7

如果有PDO_MSSQL参数来设置超时,您应该可以在那里设置。

修改

似乎有PDO::ATTR_TIMEOUT属性。根据PHP文档:

  

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

<强> EDIT2:

pdo_mssql驱动程序似乎有自定义属性。根据{{​​3}}:

  

开发人员可以使用每个连接和每个语句的PDO :: SQLSRV_ATTR_QUERY_TIMEOUT设置查询超时,并利用它在其应用程序中提供更好的用户体验。

希望有所帮助,