Php 有没有办法在连接MSSQL数据库之前ping它

Php 有没有办法在连接MSSQL数据库之前ping它,php,sql-server,Php,Sql Server,与数据库的连接非常脆弱,因此我尝试在创建链接之前测试连接。我找到了和,但没有一个与MSSQL或我可以使用的函数有任何关系 有没有办法在连接到数据库之前测试它?您可以将超时设置为一个非常小的数字,然后调用类似 SELECT 1; 或 看,如果有结果回来 如果连接断开,那么这些微小的请求也应该断开 如果易碎并不意味着断开,您可以测量一个标准调用并比较执行速度…您可以尝试ping服务器+相应端口以查看服务器是否接受连接 $host = '127.0.0.1'; // ip address, coul

与数据库的连接非常脆弱,因此我尝试在创建链接之前测试连接。我找到了和,但没有一个与
MSSQL
或我可以使用的函数有任何关系


有没有办法在连接到数据库之前测试它?

您可以将超时设置为一个非常小的数字,然后调用类似

SELECT 1;

看,如果有结果回来

如果连接断开,那么这些微小的请求也应该断开


如果易碎并不意味着断开,您可以测量一个标准调用并比较执行速度…

您可以尝试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);

“与数据库的连接非常脆弱”是什么让你这么说的?为什么不检查初始连接是否工作?你的意思是只是ping机器?这可能会告诉您机器已启动,但并不一定意味着SQL Server正在运行。要测试SQL是否正在运行,尝试连接到它并等待连接或超时实际上是一种合理的方法。或者,您也可以使用telnet,如下所示:。以下是从PHP调用telnet的一些想法:@PedroLobito在这种情况下,
fragile
意味着它会不断地中断,然后再打开再关闭等等。因此,您不需要ping数据库,而是修复
my.cnf
我创建了一个函数来测试服务器,但数据库存储在其他地方,我无法使用
fsockopen
ping数据库所在的ip地址。
$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);