반응형
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 경고가 발생한다고 가정하려면 "@"를 추가해야 합니다.
다른 방법도 있지만 사용하는 코드에 따라 다릅니다.
전에...(제 말은 다른 파일의 어딘가에 당신이 포함했는지 확실하지 않다는 것입니다.)
$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
반응형
'programing' 카테고리의 다른 글
HTML 양식 게시를 위한 XMLHttp 요청 (0) | 2023.08.20 |
---|---|
크롬/사파리가 플렉시블 부모의 높이를 100% 채우지 않음 (0) | 2023.08.20 |
pip을 사용하여 패키지의 여러 버전 설치 (0) | 2023.08.20 |
JqGrid를 사용하여 select2 드롭다운의 선택된 값을 변경하려면 어떻게 해야 합니까? (0) | 2023.08.20 |
읽기 전용 속성을 모의로 모의하는 방법은 무엇입니까? (0) | 2023.08.20 |