在 zend 中设置 pdo_mssql 超时

发布于 2024-12-04 01:31:37 字数 425 浏览 0 评论 0 原文

我有一两个查询需要约 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);
}

I have one or 2 queries that take ~ 10 minutes to execute.

How do I manipulate the $db object to include timeouts?

$_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);
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

耶耶耶 2024-12-11 01:31:37

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

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

编辑:

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

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

EDIT2:

pdo_mssql 驱动程序似乎有一个自定义属性。根据 此博客条目

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

希望有帮助,

I'm not familiar with the PDO_MSSQL adapter, but according to the documentation, you can use the driver_options parameter to add specific options to the adapter. See the example #7 in http://framework.zend.com/manual/en/zend.db.adapter.html#zend.db.adapter.connecting.parameters

If there is a PDO_MSSQL parameter to set the timeout, you should be able to set it there.

EDIT:

There seems to be a PDO::ATTR_TIMEOUT attribute. According to the PHP documentation:

PDO::ATTR_TIMEOUT: Specifies the timeout duration in seconds. Not all drivers support this option, and it's meaning may differ from driver to driver. For example, sqlite will wait for up to this time value before giving up on obtaining an writable lock, but other drivers may interpret this as a connect or a read timeout interval. Requires int.

EDIT2:

There seems to be a custom attribute for the pdo_mssql driver. According to this blog entry:

Developers can set the query timeout using the PDO::SQLSRV_ATTR_QUERY_TIMEOUT per connection and per statement, and exploit it to provide a better user experience in their applications.

Hope that helps,

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文