Laravel:设置 MSSQL 超时



我正在使用不同主机上的MSSQL数据库在Linux上工作,该数据库可能可用,也可能不可用。是否可以为此设置合理的超时?例如,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(...);

尝试使用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,
],
],

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

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

会做的伎俩!

最新更新