programing

PHP가 이미 데이터베이스에 연결되어 있는지 확인하려면 어떻게 해야 합니까?

codeshow 2023. 8. 20. 12:55
반응형

PHP가 이미 데이터베이스에 연결되어 있는지 확인하려면 어떻게 해야 합니까?

기본적으로 유사 코드에서 저는 다음과 같은 것을 찾고 있습니다.

if (connected_to_any_database()) {
    // do nothing
}
else {
    mysql_connect(...)
}

구현 방법

connected_to_any_database()

mysql_ping()을 사용해 보셨습니까?

업데이트: PHP 5.5 이후부터는 mysqli_ping()을 대신 사용합니다.

서버 연결을 ping하거나 연결이 중단된 경우 다시 연결을 시도합니다.

if ($mysqli->ping()) {
  printf ("Our connection is ok!\n"); 
} else {
  printf ("Error: %s\n", $mysqli->error); 
}

또는 두 번째(신뢰성이 낮은) 접근 방식은 다음과 같습니다.

$link = mysql_connect('localhost','username','password');
//(...)
if($link == false){
    //try to reconnect
}

PHP의 mysql_ping 함수를 사용해 보십시오.

echo @mysql_ping() ? 'true' : 'false';

데이터베이스에 연결되지 않은 상태에서 이 기능을 실행하면 MySQL 경고가 발생한다고 가정하려면 "@"를 추가해야 합니다.

다른 방법도 있지만 사용하는 코드에 따라 다릅니다.

mysql_ping

전에...(제 말은 다른 파일의 어딘가에 당신이 포함했는지 확실하지 않다는 것입니다.)

$db = mysql_connect()

나중에...

if (is_resource($db)) {
// connected
} else {
$db = mysql_connect();
}

슈워츠 남작은 인종 조건 때문에 이 '쓰기 전 점검'이 좋지 않은 관행이라고 블로그에 올립니다.그는 다음을 포함한 트라이/캐치 패턴을 지지합니다.reconnect곤경에 처한그가 추천하는 유사 코드는 다음과 같습니다.

function query_database(connection, sql, retries=1)
   while true
      try
         result=connection.execute(sql)
         return result
      catch InactiveConnectionException e
         if retries > 0 then
            retries = retries - 1
            connection.reconnect()
         else
            throw e
         end
      end
   end
end

다음은 그의 블로그 전문입니다: https://www.percona.com/blog/2010/05/05/checking-for-a-live-database-connection-considered-harmful/

// Earlier in your code
mysql_connect();
set_a_flag_that_db_is_connected();

// Later....
if (flag_is_set())
 mysql_connect(....);

언급URL : https://stackoverflow.com/questions/5148033/how-do-i-check-if-php-is-connected-to-a-database-already

반응형