与数据库的连接是非常脆弱的,所以我尝试在建立连接之前测试连接。我发现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