使用 PHP 检查是否可以在短时间内从本地应用程序访问 MySql 在线服务器

Check if MySql online server is reachable from local application in short period of time with PHP

我有一个基于 PHPlocal Web 应用程序,它使用 online[=26] =] Mysql 服务器。

我需要知道我什么时候可以连接到那个服务器(我什么时候有互联网连接,或者服务器什么时候关闭)。

我试过了

$conn = new mysqli('hostname','username','password','db');

if($conn->connect_error){
    //offline action
}
else{
    //online action
}

这有效,但它会持续大约一分钟以确定服务器是否可访问。

我想知道是否有任何其他持续时间少于 3 或 4 秒的解决方案。

首先检查服务器 returns 是否有响应,您可以使用 fsockopen(),但也可以使用其他方法,例如使用 operating system shell,因此您可以 ping

function is_connectable(string $host, int $port=80, int $timeout=3){
    if($fp = @fsockopen($host, $port, $errno, $errstr, $timeout)){
        return fclose($fp) || true;
    }

    return false;
}

$host = "mysql.someserver.com";
$port = 3306;
$user = "username";
$pass = "mypassword";
$mydb = "mydatabase";

if(is_connectable($host, $port)){
    try{
      $pdo = new PDO("mysql:host=$host;port=$port;dbname=$mydb", $user, $pass);
    } catch(Exception $e){
      die($e->getMessage());
    }
} else {
    die("mysql server '$host' is down");
}

也有直接使用数据库驱动的超时: