Laravel:设置MSSQL超时

时间:2017-07-24 15:06:55

标签: sql-server laravel

我在Linux上使用不同主机上的MSSQL数据库,可能有也可能没有。是否可以为此设置合理的超时?例如。 2或3秒就足够了。目前,使用我的默认设置,超时超过1分钟。

连接设置:

    'mssql' => [
      'driver' => 'sqlsrv',
      'host' => 'CDBSQLSERVER',
      'database' => 'MyDatabase',
      'username' => 'XXXX',
      'password' => 'XXXX',
      'charset' => 'utf8',
      'prefix' => ''
    ]

freetds.conf

    [CDBSQLSERVER]
    host = 192.168.43.141
    port = 1433
    tds version = 7.0

我正在使用它:

$myDb = DB::connection('mssql');
$myDb->select(...);

3 个答案:

答案 0 :(得分:1)

尝试使用PDO::ATTR_TIMEOUT选项:

  

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

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

database.php

'mysql' => [
    'driver'    => 'mysql',
    'host'      => 'localhost',
    'database'  => 'database',
    'username'  => 'root',
    'password'  => '',
    'charset'   => 'utf8',
    'collation' => 'utf8_unicode_ci',
    'prefix'    => '',
    'options'   => [
        PDO::ATTR_TIMEOUT => 1,
    ],
],

答案 1 :(得分:0)

我忽略了/ets/freetds/freetds.conf中的超时!他们被评论出来了。

    [global]
    ...
    timeout = 5
    connect timeout = 5

会做的伎俩!

答案 2 :(得分:0)

使用参数 login_timeout

'mssql' => [
  'driver' => 'sqlsrv',
  'host' => 'CDBSQLSERVER',
  'database' => 'MyDatabase',
  'username' => 'XXXX',
  'password' => 'XXXX',
  'charset' => 'utf8',
  'prefix' => '',
  'login_timeout' => YOUR_TIMEOUT
]