2010-11-18 7 views
2

MySQL 서버에 성공적으로 연결되면 PHP를 통해 확인하는 가장 좋은 방법은 무엇입니까? 먼저 소켓 연결 (fsockopen)을 열고 소켓 연결이 성공한 경우에만 MySQL에 연결 (확장명을 변경하지 않고)하려고 시도하는 몇 가지 솔루션을 보았습니다. 매번 두 개의 연결을해야하기 때문에 이것에 대해 너무 확신하지 못합니다. 서버를 너무 많이 망칠 수 있습니까?MySQL 서버가 연결을 받아 들일 수 있는지 확인하십시오.

내 문제는 어떤 이유에서든 MySQL 서버가 잠기거나 작동을 멈 추면 웹 페이지가 작동을 멈추는 것입니다 (오랜 시간 동안로드 된 다음 일반적으로 504 게이트웨이 시간 초과 오류가 발생 함). MySQL을 사용할 수없는 경우 사용자에게 친숙한 오류 메시지를 표시하고 싶습니다. 또한 서버가 다시 켜질 때까지 새로운 클라이언트가 서버에 연결하지 않으므로 MySQL이 이미 어려움을 겪고 있다면 더 많이 망가 뜨리는 것을 피할 수 있습니다.

나는 관련성이있는 경우 MySQLi 확장자를 사용하고 있습니다.

+0

에서해서는 안 MySQL의 연결 시도 시간을 상대적으로 빠르게 실패 할 때 무엇입니까? –

+0

은 connect_timeout 설정에 따라 달라집니다. – ajreal

답변

2

당신의 필요가 MYSQLI_OPT_CONNECT_TIMEOUT이 mysqli에서 지정한 :: 옵션 details

+0

+1 이것은 조정할 올바른 것 같습니다. –

+0

이렇게하면 시간 초과가 더 빨리 이루어집니다. 그러나 나는 여전히 MySQLi 연결이'fsockopen' 검사보다 MySQL 서버에 더 비싸다고 걱정하고 있습니다. 이견있는 사람? –

+0

fsockopen을 사용하면 IMHO - 2가 1보다 큽니다. – ajreal

0
<?php 
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db'); 

/* 
* This is the "official" OO way to do it, 
* BUT $connect_error was broken until PHP 5.2.9 and 5.3.0. 
*/ 
if ($mysqli->connect_error) { 
    die('Connect Error (' . $mysqli->connect_errno . ') ' 
      . $mysqli->connect_error); 
} 

/* 
* Use this instead of $connect_error if you need to ensure 
* compatibility with PHP versions prior to 5.2.9 and 5.3.0. 
*/ 
if (mysqli_connect_error()) { 
    die('Connect Error (' . mysqli_connect_errno() . ') ' 
      . mysqli_connect_error()); 
} 

echo 'Success... ' . $mysqli->host_info . "\n"; 

$mysqli->close(); 
?> 

http://www.php.net/manual/en/mysqli.connect.php

+0

이것은 MySqli 확장이 신이 얼마나 오래 연결을 기다릴 지 알기 위해 오류가 발생합니다. 새로운 MySqli를하기 전에 연결할 수 있는지 알아야합니다. –

관련 문제