Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP检查是否可以在短时间内从本地应用程序访问MySql在线服务器_Php_Mysql_Mysqli_Connection - Fatal编程技术网

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

使用PHP检查是否可以在短时间内从本地应用程序访问MySql在线服务器,php,mysql,mysqli,connection,Php,Mysql,Mysqli,Connection,我有一个基于PHP的localweb应用程序,它使用一个在线Mysql服务器 我需要知道我什么时候可以到达那个服务器(我什么时候可以连接互联网,或者服务器什么时候关闭) 我试过这个 $conn = new mysqli('hostname','username','password','db'); if($conn->connect_error){ //offline action } else{ //online action } 它可以工作,但需要大约一分钟来确定服

我有一个基于PHPlocalweb应用程序,它使用一个在线Mysql服务器

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

我试过这个

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

if($conn->connect_error){
    //offline action
}
else{
    //online action
}
它可以工作,但需要大约一分钟来确定服务器是否可以访问


我想知道是否有任何其他解决方案可以持续不到3或4秒。

检查服务器是否首先返回响应,您可以使用
fsockopen()
,但也可以使用其他方法,如使用,以便
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");
}
还可以直接使用数据库驱动程序的超时:

  • 对于PDO
  • 对于MySQLi