현재 위치: > 최신 기사 목록> $ errno에 따른 자동 데이터베이스 재 연결 메커니즘

$ errno에 따른 자동 데이터베이스 재 연결 메커니즘

M66 2025-06-11

PHP 응용 프로그램을 개발할 때 데이터베이스 연결의 안정성이 매우 중요한 부분입니다. 특히 동시성이 높은 환경 또는 네트워크 변동이 높은 환경에서는 데이터베이스 연결이 중단되거나 무효화 될 수 있습니다. 이 문제를 해결하기 위해 $ errno 오류 코드를 기반으로 데이터베이스 재 연결 메커니즘을 자동으로 구현할 수 있습니다. 이 기사에서는 PHP의 $ errno 오류 코드를 통해 데이터베이스를 자동으로 다시 연결하는 방법을 소개합니다.

1. $ errno 오류 코드를 이해하십시오

PHP에서 데이터베이스 작업을 수행 할 때 연결 오류가 발생하면 데이터베이스는 오류 코드 $ errno를 반환합니다. 오류 코드에 따라 데이터베이스 재 연결이 필요한지 판단 할 수 있습니다. 일반적으로 일반적인 오류 코드는 다음과 같습니다.

  • 2002 : MySQL 서버에 연결할 수 없습니다.

  • 2006 : MySQL 서버가 연결이 끊어졌습니다.

  • 2013 : MySQL 쿼리 타임 아웃.

이러한 오류 코드를 캡처하면 데이터베이스 연결 문제로 인해 오류가 발생하는지 확인하여 다시 연결할 수 있습니다.

2. 데이터베이스 연결 기능을 만듭니다

먼저 데이터베이스 연결을 설정하는 기능이 필요합니다. 연결이 실패하면 오류 코드를 기반으로 연결을 재 시도 해야하는지 확인해야합니다.

 <?php
function connectToDatabase() {
    $host = 'localhost';   // 데이터베이스 서버
    $dbname = 'test_db';   // 데이터베이스 이름
    $username = 'root';    // 데이터베이스 사용자 이름
    $password = '';        // 데이터베이스 비밀번호

    try {
        // 데이터베이스 연결을 설정하십시오
        $pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
        // 설정PDO오류 모드는 예외입니다
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        return $pdo;
    } catch (PDOException $e) {
        // 예외를 포착하십시오,반환 오류 메시지
        echo "연결이 실패했습니다: " . $e->getMessage();
        return null;
    }
}
?>

이 코드는 간단한 데이터베이스 연결 기능 ConnectTodatabase를 제공하며 데이터베이스 작업을 수행하기위한 PDO 객체를 반환합니다. 연결이 실패하면 함수가 NULL을 반환합니다.

3. 자동 재 연결 메커니즘을 구현하십시오

다음으로 $ errno 오류 코드를 판단하고 데이터베이스 작업을 수행 할 때 자동으로 다시 연결해야합니다.

 <?php
function reconnectIfNeeded($pdo) {
    // 만약에 PDO 물체가 비어 있습니다,表示数据库연결이 실패했습니다
    if ($pdo === null) {
        // 다시 연결하십시오
        echo "正在다시 연결하십시오数据库...";
        $pdo = connectToDatabase();
    }

    // 연결이 성공했는지 여부를 결정하십시오
    if ($pdo !== null) {
        echo "데이터베이스 연결이 성공적입니다!";
    } else {
        echo "数据库연결이 실패했습니다,나중에 다시 시도하십시오。";
    }

    return $pdo;
}

// 데이터베이스 작업을 시뮬레이션합니다
function queryDatabase($pdo) {
    try {
        // 간단한 쿼리 작업을 수행하십시오
        $stmt = $pdo->query("SELECT * FROM users");
        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
            print_r($row);
        }
    } catch (PDOException $e) {
        // 포착 PDO 이상,오류 코드를 기반으로 다시 연결할지 여부를 결정합니다.
        if ($e->getCode() == 2002 || $e->getCode() == 2006 || $e->getCode() == 2013) {
            echo "데이터베이스 연결이 중단되었습니다,다시 연결하십시오...\n";
            // 다시 연결 함수를 호출합니다
            $pdo = reconnectIfNeeded($pdo);
            // 데이터베이스를 다시 쿼리하십시오
            queryDatabase($pdo);
        } else {
            // 다른 오류,输出이상信息
            echo "쿼리가 실패했습니다: " . $e->getMessage();
        }
    }
}

// 데이터베이스 연결 초기화
$pdo = connectToDatabase();

// 쿼리 작업을 수행하십시오
queryDatabase($pdo);
?>

코드 설명 :

  1. ConnectTodatabase () : 데이터베이스 연결을 설정하는 데 사용됩니다.

  2. Reconnectifneeded () :이 함수는 데이터베이스 연결이 비어있는 것으로 감지 될 때 다시 연결하려고 시도합니다.

  3. QueryDatabase () :이 기능은 데이터베이스 쿼리를 실행합니다. 연결 오류가 발생하면 (Error Code 2002, 2006 또는 2013) RECONECTIFNEEDEDED ()는 데이터베이스를 자동으로 다시 연결하고 쿼리를 다시 실행합니다.

데이터베이스 작업을 수행 할 때는 Try-Catch를 통해 예외를 포착하고 $ errno 오류 코드를 확인합니다. 연결 인터럽트 오류가 발생하면 다시 연결 및 쿼리가 자동으로 다시 실행됩니다.

4. 요약

$ errno 오류 코드를 사용하여 데이터베이스 연결 인터럽트를 효과적으로 캡처하고 자동 재 연결 메커니즘을 통해 데이터베이스 연결을 복원하여 응용 프로그램의 안정성을 보장하십시오. 위의 코드 예제는 데이터베이스 연결 오류를 처리하고 PHP에서 재 연결을 구현하는 방법을 보여줍니다. 합리적인 오류 처리를 통해 데이터베이스 실패에 직면하여 응용 프로그램이 여전히 정상적으로 작동 할 수 있는지 확인할 수 있습니다.