현재 위치: > 최신 기사 목록> mysqli :: get_warnings 및 메일 시스템으로 예외 알림 서비스를 구축하십시오

mysqli :: get_warnings 및 메일 시스템으로 예외 알림 서비스를 구축하십시오

gitbox 2025-06-06

PHP에서 MySQL 데이터베이스를 사용하는 경우 오류를 잡는 것 외에도 데이터베이스에서 발행 한 경고 메시지에주의를 기울여야합니다. 이러한 경고는 데이터 절단, 필드 길이 제한 등과 같은 잠재적 문제를 나타낼 수 있습니다 . mySQLI :: get_warnings 함수는 추가 처리를 위해 이러한 경고 정보를 얻는 데 도움이 될 수 있습니다.

이 기사에서는 MySQLI :: get_warnings를 사용하여 메일 시스템과 결합하여 간단한 예외 알림 서비스를 구축하는 방법을 소개합니다. 데이터베이스 조작이 경고를 생성하면 경고 내용이 이메일을 통해 관리자에게 자동으로 전송되어 잠재적 인 문제의 적시 발견 및 처리를 용이하게합니다.


1. mysqli :: get_warnings 소개

mysqli :: get_warnings는 최신 데이터베이스 작업에 의해 생성 된 경고 정보를 얻기 위해 PHP의 MySQLI 확장에 제공된 메소드입니다.

사용 예 :

 $mysqli = new mysqli('gitbox.net', 'user', 'password', 'database');
$mysqli->query("INSERT INTO table_name (col) VALUES ('더 긴 끈...')");
if ($warnings = $mysqli->get_warnings()) {
    do {
        echo "Warning: ({$warnings->errno}) {$warnings->message}\n";
    } while ($warnings->next());
}

이 메소드는 Errno (경고 코드), 메시지 (경고 메시지) 및 다음 () 메소드가 모든 경고를 통과하는 데 사용되는 MySQLI_Warning 객체를 반환합니다.


2. 예외 알림 서비스 구축을위한 아이디어

  • 데이터베이스 작업을 실행 한 후 Get_warnings 에 전화하여 경고가 있는지 확인하십시오.

  • 경고가있는 경우 모든 경고 정보를 수집하십시오.

  • 메일 시스템을 통해 경고 메시지가 사전 설정 관리자 사서함으로 전송됩니다.

  • 실제 비즈니스 에서이 단계는 자동 감지 및 알림을 실현하기 위해 데이터베이스 작업의 캡슐화 기능에 통합 될 수 있습니다.


3. 코드 예 : 이메일과 함께 보내십시오

다음 예제는 데이터베이스 작동 후 경고를 감지하고 이메일 알림을 보내는 방법을 보여줍니다.

 <?php
$mysqli = new mysqli('gitbox.net', 'user', 'password', 'database');

if ($mysqli->connect_errno) {
    die("연결이 실패했습니다: " . $mysqli->connect_error);
}

$sql = "INSERT INTO users (username) VALUES ('길이 이상의 사용자 이름의 예……')";
$mysqli->query($sql);

$warnings = $mysqli->get_warnings();
if ($warnings) {
    $warningMessages = [];
    do {
        $warningMessages[] = "Warning ({$warnings->errno}): {$warnings->message}";
    } while ($warnings->next());

    $subject = "데이터베이스 경고 알림";
    $body = "다음은 최근 데이터베이스 작업에서 생성 된 경고 메시지입니다.:\n\n" . implode("\n", $warningMessages);
    $to = "[email protected]";
    $headers = "From: [email protected]";

    // 이메일을 보내십시오
    if (mail($to, $subject, $body, $headers)) {
        echo "경고 알림 이메일이 전송되었습니다。";
    } else {
        echo "이메일 전송 실패。";
    }
} else {
    echo "데이터베이스 경고가 감지되지 않았습니다。";
}

$mysqli->close();
?>

4. 고급 제안

  • 로깅 : 이메일 보내기 외에도 후속 감사 및 문제 해결을 용이하게하기 위해 로그 파일에 경고 정보를 작성하는 것이 좋습니다.

  • 비동기 알림 : 이메일 보내기가 비즈니스 프로세스를 차단할 수있는 경우 대기열 또는 비동기 작업을 사용하여 이메일 전송을 처리 할 수 ​​있습니다.

  • 더 많은 알람 채널 : SMS 및 WeChat과 같은 다른 인스턴트 알림 방법과 결합하여 경보 응답 속도를 향상시킵니다.

  • 예외 캡슐화 : 데이터베이스 작동 함수 캡슐화, 오류 및 경고를 균일하게 캡처하고 중복 코드를 피하십시오.