2017-04-20 193 views
0

與數據庫的連接是非常脆弱的,所以我嘗試在建立連接之前測試連接。我發現pg_connectmysql_pinghow-do-i-ping-the-mysql-db-and-reconnect-using-pdo,但沒有任何與MSSQL或我可以使用的功能有關。有沒有辦法在連接之前ping MSSQL數據庫

有沒有辦法在連接之前測試數據庫?

+0

***「與數據庫的連接非常脆弱」***您是什麼意思? –

+0

爲什麼不只是檢查最初的連接工作? – nogad

+0

你的意思是隻是ping機器?這可能會告訴您機器已啓動,但並不一定意味着SQL Server正在運行。要測試SQL是否正在運行,嘗試連接它並等待連接或超時實際上是一種合理的方法。或者您可以使用telnet,如下所示:https://dba.stackexchange.com/questions/23704/easy-way-to-check-connectivity-to-sql-server-from-client。以下是從PHP調用telnet的一些想法:https://www.google.co.uk/search?client=ubuntu&channel=fs&q=call+telnet+from+PHP&ie=utf-8&oe=utf-8&gfe_rd=cr&ei=njP5WPGJAZPW8AfIpK3QCg – ADyson

回答

0

你可以將超時設置爲一個很小的數目,並呼籲像

SELECT 1; 

SELECT GETDATE(); 

看看,如果有一些結果回來......

如果連接斷開,那麼這樣的微小請求也應該中斷。

如果脆弱並不意味着,你可能會衡量標準的呼叫和比較的執行速度...

0

你可以嘗試ping服務器+對應的端口,看看服務器接受連接。

$host = '127.0.0.1'; // ip address, could be localhost 
$port = 1433; // your mssql port 
$timeout = 1; //time to wait in seconds for response 

if($fp = fsockopen($host,$port,$errCode,$errStr,$timeout)) 
{ 
    // Server is OK - responding 
} else { 
    // Server not respoded on given port in given time limit 
} 

fclose($fp); 
+0

我創建了一個函數來測試服務器,但數據庫存儲在別的地方,我不能使用'fsockopen'來ping數據庫所在的ip地址。 –

相關問題