2017-07-24 63 views
1

我正在Linux上使用不同主機上的MSSQL數據庫,該主機可能可用,也可能不可用。有沒有可能爲此設置一個合理的超時時間?例如。 2或3秒就足夠了。目前,使用我的默認設置,超時時間超過1分鐘。Laravel:設置MSSQL超時

連接設置:

'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(...); 

回答

0

嘗試使用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, 
    ], 
], 
+0

對不起,它沒有解決。行爲沒有改變。 – Palantir

+0

感謝您的反饋。 –

+1

可悲的是我不能幫助OP,但是這對我來說是一個流明數據庫連接到MySQL的工作 – CodeMonkey

0

我忽略了在/ets/freetds/freetds.conf超時!他們被評論了。

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

將做的伎倆!