與數據庫的連接是非常脆弱的,所以我嘗試在建立連接之前測試連接。我發現pg_connect
和mysql_ping
和how-do-i-ping-the-mysql-db-and-reconnect-using-pdo,但沒有任何與MSSQL
或我可以使用的功能有關。有沒有辦法在連接之前ping MSSQL數據庫
有沒有辦法在連接之前測試數據庫?
與數據庫的連接是非常脆弱的,所以我嘗試在建立連接之前測試連接。我發現pg_connect
和mysql_ping
和how-do-i-ping-the-mysql-db-and-reconnect-using-pdo,但沒有任何與MSSQL
或我可以使用的功能有關。有沒有辦法在連接之前ping MSSQL數據庫
有沒有辦法在連接之前測試數據庫?
你可以將超時設置爲一個很小的數目,並呼籲像
SELECT 1;
或
SELECT GETDATE();
看看,如果有一些結果回來......
如果連接斷開,那麼這樣的微小請求也應該中斷。
如果脆弱並不意味着破,你可能會衡量標準的呼叫和比較的執行速度...
你可以嘗試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);
我創建了一個函數來測試服務器,但數據庫存儲在別的地方,我不能使用'fsockopen'來ping數據庫所在的ip地址。 –
***「與數據庫的連接非常脆弱」***您是什麼意思? –
爲什麼不只是檢查最初的連接工作? – nogad
你的意思是隻是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