Suprimindo avisos de DOP

Estou tentando exibir um status do servidor, com base no fato de o banco de dados poder ser conectado ou não. Com a velha escolamysql_connect() emysqli_connect() foi fácil. Estou tentando me manter moderno, por isso estou usando o DOP, mas não consigo descobrir como suprimir o aviso padrão. Pelo que posso dizer, você precisa usar ogetMessage() função para imprimir o aviso DOP, mas não o estou usando.

Aqui está o meu código:

8  $dbstatus = 1;
9  try {
10  $db = new PDO($dbms . ':host=' . $dbhost . ';port=' . $dbport . ';dbname=' . $dbname, $dbuser, $dbpasswd);
11  $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
12 } catch(PDOException $e) {
13  $dbstatus = 0;
14 }
15 if($dbstatus == 1) {
16  echo '<span style="color: green">DB Up</span>';
17 } else {
18  echo '<span style="color: red">DB Down</span>';
19  exit;
20 }

Todas as variáveis de conexão são fornecidas e corretas, exceto as$dbhost, que é intencionalmente quebrado para testar isso. Agora, ele produz os resultados desejados, mas também imprime uma mensagem de aviso:

Aviso: PDO :: __ construct (): php_network_getaddresses: getaddrinfo falhou: nenhum host é conhecido. noC: \ xampp \ htdocs \ cd \ inclui \ dbconnect.php conectados10

Se eu corrigir o$dbhost variável, ele funciona bem, então eu sei que o problema não é com a declaração DOP sendo utilizável.

Alguma idéia do que estou perdendo?

Solução

Eu usei uma variação do que foi fornecido por jeroen:

if(filter_var(gethostbyname($dbhost), FILTER_VALIDATE_IP)) {
 $dbstatus = 1;
 try {
  $db = new PDO($dbms . ':host=' . $dbhost . ';port=' . $dbport . ';dbname=' . $dbname, $dbuser, $dbpasswd, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
 } catch(PDOException $e) {
  $dbstatus = 0;
 }
} else {
 $dbstatus = 0;
}
if($dbstatus == 1) {
 echo '<span style="color: green">DB Up</span>';
} else {
 echo '<span style="color: red">DB Down</span>';
 exit;
}

Obrigado pela ajuda e espero que isso ajude outra pessoa! ^^

questionAnswers(1)

yourAnswerToTheQuestion