2016-12-23 9 views
1

У меня есть местного веб-приложения на основе PHP, который использует онлайн сервера Mysql.Проверьте, подключен ли сервер MySql достижима из местного применения в короткий период времени с PHP

Мне нужно знать, когда я смогу добраться до этого сервера (когда у меня есть подключение к Интернету или когда сервер выключен).

Я попробовал этот

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

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

, который работает, но это длится около минуты, чтобы определить, если сервер доступен или нет.

Мне было интересно, есть ли какое-либо другое решение для этого, которое длится менее 3 или 4 секунд.

ответ

1

Проверьте, отвечает ли сервер первым ответом, вы можете использовать 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"); 
} 

Там также использовать тайм-аут от драйвера базы данных непосредственно:

+0

Это работало идеально подходит для меня. Благодаря!! –

 Смежные вопросы

  • Нет связанных вопросов^_^