mysqli :: debug () 는 PHP에서 비교적 쓸모 없지만 매우 강력한 디버깅 도구입니다. 개발자는 기본 MySQLI 확장의 디버깅 기능을 활성화하여 연결, 쿼리 실행 등의 세부 사항을 분석 할 수 있습니다. PHP 8.1 이후 MySQLI :: Debug () 의 매개 변수 지원은 특히 트레이스 옵션이 더 유연합니다. 이는 개발자에게 더 강력한 사용자 정의 기능을 제공합니다.
이 기사에서는 mysqli :: debug () 추적 옵션의 사용 및 고급 구성 방법을 소개하고 몇 가지 예를 결합하여 목적을 더 잘 이해하는 데 도움이됩니다.
mysqli :: debug ()는 디버그 출력을 활성화하는 데 사용되는 메소드입니다. 실제로 mysqli_debug () 함수의 객체 지향 버전입니다. 디버깅 옵션을 지정하는 문자열 매개 변수를 허용합니다.
mysqli::debug(string $options): bool
그중에서도 $ 옵션은 우리가 집중하고자하는 초점입니다 - 쉼표로 구분 된 디버그 설정 세트는 다음과 같습니다.
mysqli::debug("d:t:o,/tmp/client.trace")
디버그 문자열의 경우 몇 가지 일반적인 옵션이 다음과 같습니다.
거절 가능한 디버깅
테이블 트레이스 (트레이스)
o, <파일> 지정된 파일에 디버그 출력을 쓰십시오
i, <file> 지정된 파일에서 구성을 읽으십시오
f 레코드 기능 호출
모든 전화 (더 많은 장황) 기록
n 네트워크 통신 콘텐츠 표시
이 옵션을 결합하여 MySQLI 실행에 대한 자세한 모니터링을 활성화 할 수 있습니다.
디버그 정보를 서버의 /TMP 디렉토리에 로그인한다고 가정합니다.
<?php
mysqli::debug("d:t:o,/tmp/mysqli.trace.log");
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_error) {
die("연결이 실패했습니다: " . $mysqli->connect_error);
}
$result = $mysqli->query("SELECT * FROM users");
while ($row = $result->fetch_assoc()) {
print_r($row);
}
$mysqli->close();
?>
이 구성은 다음과 같습니다.
디버깅 활성화 ( D )
추적 기능 활성화 ( T )
출력을 /tmp/mysqli.trace.log 에 저장하십시오
mysqli::debug("d:t:F:o,/tmp/trace_func.log");
F 매개 변수가 활성화되면 로그에는 각 MySQLI 함수에 대한 통화 스택이 포함되어있어 성능 병목 현상을 분석하는 데 특히 유용합니다.
구성 파일을 읽어 디버그 매개 변수를 미리 설정할 수 있습니다.
// config.txt 콘텐츠:d:t:o,/tmp/from_config.log
mysqli::debug("i,/var/www/html/config.txt");
이는 하드 코딩을 피하고 유연성을 높이며 대규모 프로젝트 또는 디버그 배포 환경에 적합합니다.
클라이언트와 서버 간의 커뮤니케이션에 문제가 있다고 의심되면 N을 활성화 할 수 있습니다.
mysqli::debug("d:t:n:o,/tmp/net_debug.log");
참고 :이 옵션에 의해 생성 된 로그에는 민감한 데이터가 포함되어 있으며 엄격하게 보호해야합니다.
디버그 로그가 생성 된 후 다음 명령을 통해 볼 수 있습니다.
tail -f /tmp/mysqli.trace.log
생산 환경에서 사용하는 경우 로그 파일 경로를 전용 로그 디렉토리로 바꾸고 적절한 권한을 설정하는 것이 좋습니다.
프론트 엔드 URL과 결합하여 로그를 다음과 같은 추적 ID와 연관시킬 수도 있습니다.
$traceId = uniqid("trace_", true);
mysqli::debug("d:t:o,/tmp/$traceId.log");
header("X-Debug-Trace: https://m66.net/debug/$traceId.log");
이러한 방식으로 브라우저 개발자 도구에서 링크를 추적하고 문제를 신속하게 찾을 수 있습니다.
mysqli :: debug () 의 추적 옵션은 개발자에게 강력한 디버깅 방법을 제공합니다. 추적 문자열을 합리적으로 구성하면 다음을 달성 할 수 있습니다.
기능 호출 분석
네트워크 디버깅
중앙 집중식 로그 관리
구성 파일의 확장 성과 결합
개발 및 테스트 단계에서 이러한 추적 옵션을 잘 활용하면 많은 문제 해결 시간을 절약 할뿐만 아니라 PHP와 MySQL 간의 상호 작용 메커니즘을 더 깊이 이해하는 데 도움이됩니다.