현재 위치: > 최신 기사 목록> mysqli :: Debug는 데이터베이스 관련 장치 테스트 및 디버깅을 위해 PhPunit과 결합

mysqli :: Debug는 데이터베이스 관련 장치 테스트 및 디버깅을 위해 PhPunit과 결합

M66 2025-05-17

데이터베이스 관련 장치 테스트를 수행 할 때 때때로 테스트가 실패하고 복잡한 SQL 작업이 포함될 때 정확히 무슨 일이 일어나고 있는지에 대한 더 깊은 이해가 필요합니다. PHP의 MySQLI Extension은 매우 실용적인 디버깅 기능 MySQLI :: Debug () 를 제공하며, 이는 기본 작업 로그를 파일에 출력 할 수 있습니다. 이 기사에서는 MySQLI :: Debug ()를 결합하여 테스트를 위해 PhPunit을 사용할 때 데이터베이스 작업의 디버깅 기능을 구현하는 방법을 소개합니다.

1. mysqli :: debug () 란 무엇입니까?

mysqli :: debug (String $ debug_options)는 클라이언트 디버그 로그를 활성화하는 데 사용할 수있는 MySQLI 클래스의 메소드입니다. 매개 변수는 출력 파일 경로 및 로그 레벨과 같은 디버그 정보의 구성을 설명하는 문자열입니다. 로깅을 자동으로 활성화하지 않으며 MySQL 서버의 컴파일 옵션에서 디버깅을 지원해야합니다.

 mysqli::debug("d:t:o,/tmp/client.trace");

안에:

  • D는 디버깅을 나타냅니다

  • t 스레드 정보를 포함하는 것을 의미합니다

  • o 파일 출력을 의미합니다

  • /tmp/client.trace 는 로그 파일의 경로입니다

2. phpunit 테스트에서 mysqli :: debug ()를 사용하십시오

데이터베이스 관련 테스트에 PHPUNIT를 사용하는 경우 Setup () 또는 SetupBeforeClass () 메소드에서 디버깅을 활성화 할 수 있습니다. 이러한 방식으로 데이터베이스 작업을 추적하는 데 도움이되도록 테스트가 실행될 때마다 디버그 정보가 기록됩니다.

실제 예는 다음과 같습니다.

 use PHPUnit\Framework\TestCase;

class DatabaseTest extends TestCase
{
    private static $mysqli;

    public static function setUpBeforeClass(): void
    {
        // 디버그 출력을 활성화합니다
        mysqli::debug("d:t:o,/tmp/php-mysqli-debug.log");

        self::$mysqli = new mysqli("localhost", "user", "password", "testdb");

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

    public function testInsertData()
    {
        $stmt = self::$mysqli->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
        $stmt->bind_param("ss", $name, $email);

        $name = "사용자를 테스트하십시오";
        $email = "test@m66.net";

        $this->assertTrue($stmt->execute());
    }

    public static function tearDownAfterClass(): void
    {
        self::$mysqli->close();
    }
}

3. 주목할만한 것들

  1. 로그 파일 권한 : PHP가 /tmp/php-mysqli-debug.log 와 같은 지정된 로그 파일 경로에 쓸 수있는 권한이 있는지 확인하십시오.

  2. 생산 환경에서주의 : MySqli :: Debug ()는 주로 개발 및 디버깅 단계에서 사용됩니다. 민감한 정보의 누출을 피하기 위해 생산 환경에서이를 활성화하는 것이 좋습니다.

  3. 디버깅 파일에는 많은 내용이 있습니다 . 파일 디버깅이 빠르게 커질 수 있습니다. 특히 많은 수의 데이터베이스 테스트를 실행할 때 파일 경로를 합리적으로 계획하고 로그를 정기적으로 정리하십시오.

4. 디버깅 결과 분석

/tmp/php-mysqli-debug.log 파일을 열면 다음을 포함한 자세한 디버깅 정보가 표시됩니다.

  • 각 연결의 설정 및 폐쇄

  • 쿼리 명령문 실행 상태

  • 매개 변수 바인딩 및 실행 프로세스

  • 스레드 정보 등

이 정보는 PHP 프로그램이 MySQL과 어떻게 전달되는지, 특히 테스트가 실패했을 때 문제를 찾을 때 분명히 이해하는 데 도움이 될 수 있습니다.

5. 요약

phpunit과 함께 mysqli :: debug ()를 사용하는 것은 특히 데이터베이스 드라이버, orms 또는 통합 테스트를 수행 할 때 매우 실용적인 디버깅 방법입니다. 데이터베이스 관련 테스트 및 디버깅을 종종 수행하는 경우이 방법을 사용해 볼 수도 있습니다. 문제 해결 문제에 많은 시간을 절약 할 수 있습니다.

mysqli :: debug () 의 사용법에 대한 자세한 내용은 공식 PHP 문서를 참조하십시오 : https://www.php.net/manual/zh/mysqli.debug.php