【发布时间】:2014-05-26 04:53:45
【问题描述】:
ATTR_TIMEOUT 的 documentation 表示:
以秒为单位指定超时持续时间。并非所有驱动程序都支持 此选项,其含义可能因驱动程序而异。为了 例如,sqlite 在放弃之前会等待到这个时间值 在获得可写锁时,但其他驱动程序可能会将其解释为 连接或读取超时间隔。
我通过 unixODBC 使用 ODBC 连接到名为 Vertica 的封闭源数据库,当我通过以下方式连接时,我没有看到正确的连接超时行为:
$this->conn = new PDO($dsn, $user, $password,
array(PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_TIMEOUT => 2)); // timeout in 2 seconds
该行为是由 PDO PHP 类、unixODBC 还是 Vertica ODBC 驱动程序本身提供的?试图找出从哪里开始调试。
【问题讨论】:
-
这个 bug 存在于 2008 年,但看起来它从未进入 PHP 的源代码树:bugs.php.net/bug.php?id=45287