我有一两个查询需要大约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);
}
答案 0 :(得分:1)
我不熟悉PDO_MSSQL
适配器,但根据文档,您可以使用driver_options
参数向适配器添加特定选项。请参阅http://framework.zend.com/manual/en/zend.db.adapter.html#zend.db.adapter.connecting.parameters
如果有PDO_MSSQL
参数来设置超时,您应该可以在那里设置。
修改强>
似乎有PDO::ATTR_TIMEOUT
属性。根据PHP文档:
PDO::ATTR_TIMEOUT
:指定超时持续时间(以秒为单位)。并非所有驱动程序都支持此选项,并且它的含义可能因驱动程序而异。例如,在放弃获取可写锁之前,sqlite将等待达到此时间值,但其他驱动程序可能会将此解释为连接或读取超时间隔。需要int。
<强> EDIT2:强>
pdo_mssql
驱动程序似乎有自定义属性。根据{{3}}:
开发人员可以使用每个连接和每个语句的PDO :: SQLSRV_ATTR_QUERY_TIMEOUT设置查询超时,并利用它在其应用程序中提供更好的用户体验。
希望有所帮助,