首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel:设置MSSQL超时

Laravel:设置MSSQL超时
EN

Stack Overflow用户
提问于 2017-07-24 23:06:55
回答 2查看 5.9K关注 0票数 1

我正在Linux上使用另一台主机上的MSSQL数据库,该主机可能不可用,也可能不可用。是否可以为此设置一个合理的超时时间?例如,2到3秒就足够了。目前,在我的默认设置下,超时超过1分钟。

连接设置:

代码语言:javascript
运行
复制
    'mssql' => [
      'driver' => 'sqlsrv',
      'host' => 'CDBSQLSERVER',
      'database' => 'MyDatabase',
      'username' => 'XXXX',
      'password' => 'XXXX',
      'charset' => 'utf8',
      'prefix' => ''
    ]

freetds.conf

代码语言:javascript
运行
复制
    [CDBSQLSERVER]
    host = 192.168.43.141
    port = 1433
    tds version = 7.0

我是这样使用它的:

代码语言:javascript
运行
复制
$myDb = DB::connection('mssql');
$myDb->select(...);
EN

回答 2

Stack Overflow用户

发布于 2017-07-24 23:12:42

尝试使用PDO::ATTR_TIMEOUT选项:

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

http://php.net/manual/en/pdo.setattribute.php

database.php

代码语言:javascript
运行
复制
'mysql' => [
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'database'  => 'database',
    'username'  => 'root',
    'password'  => '',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
    'options'   => [
        PDO::ATTR_TIMEOUT => 1,
    ],
],
票数 3
EN

Stack Overflow用户

发布于 2017-07-25 04:06:35

我忽略了/ets/freetds/freetds.conf文件中的超时!它们被注释掉了。

代码语言:javascript
运行
复制
    [global]
    ...
    timeout = 5
    connect timeout = 5

会成功的!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45284064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档