MySQL Native Driver 런타임 구성

이러한 함수의 동작은 php.ini의 설정에 영향을 받습니다.

MySQL 기본 드라이버 구성 옵션

Name Default Changeable Changelog
mysqlnd.collect_statistics "1" PHP_INI_SYSTEM  
mysqlnd.collect_memory_statistics "0" PHP_INI_SYSTEM  
mysqlnd.debug "" PHP_INI_SYSTEM  
mysqlnd.log_mask 0 PHP_INI_ALL  
mysqlnd.mempool_default_size 16000 PHP_INI_ALL  
mysqlnd.net_read_timeout "86400" PHP_INI_ALL PHP 7.2.0 이전에는 기본값이 "31536000"이었고 변경 가능성은 PHP_INI_SYSTEM이었습니다.
mysqlnd.net_cmd_buffer_size "4096" PHP_INI_SYSTEM  
mysqlnd.net_read_buffer_size "32768" PHP_INI_SYSTEM  
mysqlnd.sha256_server_public_key "" PHP_INI_PERDIR  
mysqlnd.trace_alloc "" PHP_INI_SYSTEM  
mysqlnd.fetch_data_copy 0 PHP_INI_ALL  

PHP_INI_* 모드에 대한 자세한 내용과 정의는 구성 설정을 설정할 수 있는 위치를 참조하세요.

다음은 구성 지시문에 대한 간단한 설명입니다.

mysqlnd.collect_statistics bool
mysqli_get_client_stats(), mysqli_get_connection_stats()를 통해 액세스할 수 있는 다양한 클라이언트 통계 수집을 활성화하고 phpinfo() 함수 출력의 mysqlnd 섹션에도 표시됩니다.

이 구성 설정은 메모리 관리와 관련된 통계를 제외한 모든 MySQL 기본 드라이버 통계를 활성화합니다.

mysqlnd.collect_memory_statistics bool
mysqli_get_client_stats(), mysqli_get_connection_stats()를 통해 액세스할 수 있는 다양한 메모리 통계 수집을 활성화하고 phpinfo() 함수 출력의 mysqlnd 섹션에도 표시됩니다.

이 구성 설정은 전체 MySQL 기본 드라이버 통계 집합 내에서 메모리 관리 통계를 활성화합니다.

mysqlnd.debug string
지정된 로그 파일에 mysqlnd를 사용하는 모든 확장의 통신을 기록합니다.

지시문의 형식은 mysqlnd.debug = "option1[,parameter_option1][:option2[,parameter_option2]]"입니다.

형식 문자열에 대한 옵션은 다음과 같습니다.

  • A[,file] - 지정된 파일에 추적 출력을 추가합니다. 또한 각 쓰기 후에 데이터가 기록되도록 합니다. 이것은 추적 파일을 닫았다가 다시 열어 수행됩니다(느림). 응용 프로그램이 충돌하는 경우 전체 로그 파일을 확인하는 데 도움이 됩니다.
  • a[,file] - 지정된 파일에 추적 출력을 추가합니다.
  • d - 현재 상태에 대한 DBUG_ 매크로의 출력을 활성화합니다. 해당 키워드가 있는 DBUG 매크로에 대해서만 출력을 선택하는 키워드 목록이 뒤따를 수 있습니다. 키워드의 빈 목록은 모든 매크로에 대한 출력을 의미합니다.
  • f[,functions] - 디버거 작업을 지정된 함수 목록으로 제한합니다. 함수의 빈 목록은 모든 함수가 선택되었음을 의미합니다.
  • F - 출력을 일으키는 매크로가 포함된 소스 파일의 이름으로 각 디버거 출력 라인을 표시합니다.
  • i - 현재 프로세스의 PID로 각 디버거 출력 라인을 표시합니다.
  • L - 각 디버거 출력 라인을 출력을 일으키는 매크로의 소스 파일 라인 번호 이름으로 표시합니다.
  • n - 각 디버거 출력 라인을 현재 함수 중첩 깊이로 표시합니다.
  • o[,file] - Similar to a[,file] but overwrites old file, and does not append.

  • o[,file] -[,file]과 유사하지만 이전 파일을 덮어쓰고 추가하지 않습니다.
  • O[,file] - A[,file]과 유사하지만 이전 파일을 덮어쓰고 추가하지 않습니다.
  • t[,N] - 함수 제어 흐름 추적을 활성화합니다. 최대 중첩 깊이는 N으로 지정되며 기본값은 200입니다.
  • x - 이 옵션은 프로파일링을 활성화합니다.
  • m - 메모리 할당 및 할당 해제 관련 호출을 추적합니다.

Example:

d:t:x:O,/tmp/mysqlnd.trace
                     

메모: 이 함수는 PHP의 디버그 빌드에서만 사용할 수 있습니다. PHP의 디버그 빌드를 사용하고 PHP가 Microsoft Visual C 버전 9 이상을 사용하여 빌드된 경우 Microsoft Windows에서 작동합니다.

mysqlnd.log_mask int
기록할 쿼리를 정의합니다. 로깅을 비활성화하는 기본값은 0입니다. PHP 상수가 아닌 정수를 사용하여 정의하십시오. 예를 들어, 값 48(16 + 32)은 '좋은 인덱스 없음'(SERVER_QUERY_NO_GOOD_INDEX_USED = 16)을 사용하거나 인덱스를 전혀 사용하지 않는(SERVER_QUERY_NO_INDEX_USED = 32) 느린 쿼리를 기록합니다. 값 2043(1 + 2 + 8 + ... + 1024)은 모든 느린 쿼리 유형을 기록합니다.

유형은 다음과 같습니다.:SERVER_STATUS_IN_TRANS=1, SERVER_STATUS_AUTOCOMMIT=2, SERVER_MORE_RESULTS_EXISTS=8, SERVER_QUERY_NO_GOOD_INDEX_USED=16, SERVER_QUERY_NO_INDEX_USED=32, SERVER_STATUS_CURSOR_EXISTS=64, SERVER_STATUS_LAST_ROW_SENT=128, SERVER_STATUS_DB_DROPPED=256, SERVER_STATUS_NO_BACKSLASH_ESCAPES=512, and SERVER_QUERY_WAS_SLOW=1024.

mysqlnd.mempool_default_size int
결과 세트에서 사용되는 mysqlnd 메모리 풀의 기본 크기입니다.
mysqlnd.net_read_timeout int
mysqlnd와 MySQL 클라이언트 라이브러리인 libmysqlclient는 서로 다른 네트워킹 API를 사용합니다. mysqlnd는 PHP 스트림을 사용하는 반면 libmysqlclient는 운영 수준 네트워크 호출에 대해 자체 래퍼를 사용합니다. PHP는 기본적으로 스트림에 대해 읽기 제한 시간을 60초로 설정합니다. 이것은 php.ini, default_socket_timeout을 통해 설정됩니다. 이 기본값은 다른 시간 초과 값을 설정하지 않는 모든 스트림에 적용됩니다. mysqlnd는 다른 값을 설정하지 않으므로 default_socket_timeout 초 후에 장기 실행 쿼리의 연결이 끊어질 수 있어 오류 메시지 2006 - MySQL Server has gone away. MySQL 클라이언트 라이브러리는 기본 시간 초과를 24 * 3600초(1일)로 설정하고 TCP/IP 시간 초과와 같은 다른 시간 초과가 발생할 때까지 기다립니다. mysqlnd는 이제 동일한 매우 긴 시간 초과를 사용합니다. 값은 새로운 php.ini 설정(mysqlnd.net_read_timeout)을 통해 구성할 수 있습니다. mysqlnd.net_read_timeoutmysqlnd를 사용하는 모든 확장(ext/mysql, ext/mysqli, PDO_MySQL)에서 사용됩니다. mysqlnd는 PHP Streams에게 mysqlnd.net_read_timeout을 사용하도록 지시합니다. MySQL 클라이언트 라이브러리의 MYSQL_OPT_READ_TIMEOUT과 PHP 스트림 사이에는 미묘한 차이가 있을 수 있습니다. 예를 들어 MYSQL_OPT_READ_TIMEOUT은 TCP/IP 연결에서만 작동하고 MySQL 5.1.2 이전에는 Windows에서만 작동하는 것으로 문서화되어 있습니다. PHP 스트림에는 이 제한이 없을 수 있습니다. 의심스러운 경우 스트림 문서를 확인하십시오.
mysqlnd.net_cmd_buffer_size int
mysqlnd는 모든 연결에 대해 mysqlnd.net_cmd_buffer_size(var class="filename">php.ini에서) 바이트의 내부 명령/네트워크 버퍼를 할당합니다. COM_QUERY(일반 쿼리)와 같은 MySQL 클라이언트 서버 프로토콜 명령이 버퍼에 맞지 않으면 mysqlnd는 명령을 보내는 데 필요한 크기로 버퍼를 늘립니다. 버퍼가 하나의 연결에 대해 확장될 때마다 command_buffer_too_small이 1씩 증가합니다.

mysqlnd가 거의 모든 연결에 대해 초기 크기인 mysqlnd.net_cmd_buffer_size 바이트 이상으로 버퍼를 늘려야 하는 경우, 재할당을 피하기 위해 기본 크기를 늘리는 것을 고려해야 합니다.

기본 버퍼 크기는 가능한 가장 작은 값인 4096바이트입니다.

값은 mysqli_options(link, MYSQLI_OPT_NET_CMD_BUFFER_SIZE, size)를 사용하여 설정할 수도 있습니다.

mysqlnd.net_read_buffer_size int
MySQL 명령 패킷의 본문을 읽을 때 최대 읽기 청크 크기(바이트)입니다. MySQL 클라이언트 서버 프로토콜은 모든 명령을 패킷으로 캡슐화합니다. 패킷은 실제 페이로드가 있는 작은 헤더와 본문으로 구성됩니다. 본문의 크기는 헤더에 인코딩됩니다. mysqlndMIN(header.size, mysqlnd.net_read_buffer_size) 바이트 단위로 본문을 읽습니다. 패킷 본문이 mysqlnd.net_read_buffer_size 바이트보다 크면 mysqlndread()를 여러 번 호출해야 합니다.

값은 mysqli_options(link, MYSQLI_OPT_NET_READ_BUFFER_SIZE, size)를 사용하여 설정할 수도 있습니다.

mysqlnd.sha256_server_public_key string
SHA-256 인증 플러그인 관련. MySQL 서버 공개 RSA 키가 있는 파일입니다.

클라이언트는 공개 RSA 키 설정을 생략하거나 이 PHP 구성 설정을 통해 키를 지정하거나 mysqli_options()를 사용하여 런타임에 키를 설정할 수 있습니다. 클라이언트가 공개 RSA 키 파일을 제공하지 않은 경우 표준 SHA-256 인증 플러그인 인증 절차의 일부로 키가 교환됩니다.

mysqlnd.trace_alloc string
mysqlnd.fetch_data_copy int
기본 참조 및 쓰기 시 복사 논리를 사용하는 대신 내부 결과 집합 버퍼에서 PHP 변수로 결과 집합 복사를 시행합니다. 자세한 내용은 메모리 관리 구현 노트를 참조하십시오.

PHP 변수가 참조하도록 하는 대신 결과 세트를 복사하면 PHP 변수에 사용된 메모리를 더 일찍 해제할 수 있습니다. 사용자 API 코드, 실제 데이터베이스 쿼리 및 결과 집합의 크기에 따라 mysqlnd의 메모리 공간을 줄일 수 있습니다.

PDO_MySQL을 사용하는 경우 설정하지 마십시오. PDO_MySQL은 아직 새 가져오기 모드를 지원하도록 업데이트되지 않았습니다.