我正在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(...);发布于 2017-07-24 23:12:42
尝试使用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,
],
],https://stackoverflow.com/questions/45284064
复制相似问题