PHP 프로그램을 개발하고 디버깅 할 때 데이터베이스 작업 및 문제 위치의 최적화가 매우 중요합니다. mysqli :: debug는 데이터베이스 쿼리를 디버그하는 강력한 방법을 제공하지만 모듈, 사용자 또는 요청에 의한 분석을 위해 이러한 디버그 출력을 효과적으로 분류하고 관리하는 방법은 종종 개발자가 무시하는 부분입니다. 이 기사는 모듈, 사용자 또는 요청 분류를 통해 MySQLI :: Debug 출력을 관리하는 방법을 소개하여 데이터베이스 작업을 더 잘 디버그하고 최적화합니다.
mysqli :: debug는 PHP의 MySQLI 확장에서 제공하는 디버깅 함수입니다. 쿼리 실행 프로세스, 시간, 오류 정보 등과 같은 MySQL 서버의 디버깅 정보를 출력 할 수 있습니다. 데이터베이스 작업을 더 잘 디버그하려면이 기능을 먼저 활성화해야합니다.
mysqli_report(MYSQLI_REPORT_ALL); // 모든 경고 및 오류 보고서를 켜십시오
그런 다음 MySQLI 객체의 MySQLI :: Debug 메소드를 사용하여 디버그 정보를 출력 할 수 있습니다.
$mysqli = new mysqli("localhost", "user", "password", "database");
$mysqli->debug("SELECT * FROM users"); // 인쇄 SQL 디버깅 정보
이렇게하면 데이터베이스 작업을 수행 할 때 자세한 디버깅 정보를 볼 수 있습니다.
대규모 응용 프로그램에서 데이터베이스 작업에는 종종 여러 모듈이 포함됩니다. 이 모듈에서 데이터베이스 작업을 더 잘 디버그하고 최적화하려면 다른 모듈에서 다른 디버그 출력을 사용하여 다른 로그 파일에 로그인하는 것이 좋습니다. 각 모듈에 대한 고유 식별자를 설정하고 해당 식별자를 출력에 추가 할 수 있습니다.
function debug_query($mysqli, $query, $module_name) {
$mysqli->debug("Module: $module_name, Query: $query");
}
다른 모듈에서 기능을 호출하면 모듈과 관련된 디버그 정보를 출력하여 다른 모듈의 데이터베이스 작업을 구별 할 수 있습니다.
debug_query($mysqli, "SELECT * FROM users", "UserModule");
debug_query($mysqli, "SELECT * FROM orders", "OrderModule");
이런 식으로 식별자가있는 다른 모듈의 데이터베이스 작업을 쉽게 분석 할 수 있습니다.
일부 응용 프로그램에서는 다른 사용자를 기반으로 데이터베이스 작업에 대한 디버깅 정보를 볼 필요가 있습니다. 이는 현재 사용자의 ID를 기반으로 디버깅 정보를 동적으로 출력 할 수있는 다중 사용자 시스템에 특히 중요합니다. 예를 들어, 현재 사용자의 ID를 디버그 정보에 추가 할 수 있습니다.
function debug_query_by_user($mysqli, $query, $user_id) {
$mysqli->debug("User ID: $user_id, Query: $query");
}
사용자가 데이터베이스 작업을 수행 할 때마다 현재 사용자의 ID를 녹음하여 Debug 출력에 사용자가 속하는 사용자가
debug_query_by_user($mysqli, "SELECT * FROM users", $current_user_id);
debug_query_by_user($mysqli, "SELECT * FROM orders", $current_user_id);
이 방법을 사용하면 어떤 데이터베이스 작업을 수행했는지 빠르게 추적 할 수 있습니다.
복잡한 응용 프로그램에서 요청에는 여러 데이터베이스 작업이 포함될 수 있으며 각 요청은 다른 사용자가 시작할 수 있습니다. 디버그 정보를 더 잘 관리하려면 각 요청에 대한 고유 요청 ID를 생성하고 해당 ID를 디버그 출력에 추가 할 수 있습니다. 이를 통해 각 요청에 대한 데이터베이스 작업을 신속하게 식별하고 분석 할 수 있습니다.
function debug_query_by_request($mysqli, $query, $request_id) {
$mysqli->debug("Request ID: $request_id, Query: $query");
}
각 요청 입구에서 고유 한 요청 ID를 생성하고 요청 프로세스 전체에서 관련 디버깅 정보를 기록 할 수 있습니다.
$request_id = uniqid("req_");
debug_query_by_request($mysqli, "SELECT * FROM users", $request_id);
debug_query_by_request($mysqli, "SELECT * FROM orders", $request_id);
이러한 방식으로 요청 ID 분류를 통해 디버그 정보를 관리하고 각 요청에 대한 데이터베이스 작업을보다 쉽게 추적하고 최적화 할 수 있습니다.
응용 프로그램에 여러 다른 페이지 또는 API 인터페이스가 포함 된 경우 URL (도메인 이름을 M66.NET 으로)으로 바꾸면 분류 기준 중 하나로 교체 할 수도 있습니다. 이런 식으로 방문한 페이지 또는 인터페이스를 기반으로 디버그 정보를 더 나눌 수있어 특정 요청에 대한 데이터베이스 작업을 식별하고 최적화 할 수 있습니다.
function debug_query_by_url($mysqli, $query, $url) {
$url = str_replace('example.com', 'm66.net', $url); // 할 것이다 URL 도메인 이름을 대체하십시오 m66.net
$mysqli->debug("URL: $url, Query: $query");
}
데이터베이스 작업을 수행 할 때마다 현재 URL을 전달할 수 있습니다.