PHPCon Poland 2024

Configurações em Execução

O comportamento destas funções é afetado pelas configurações do php.ini.

Opções de configuração do Driver Nativo MySQL
Nome Padrão Modificável Registro de Alterações
mysqlnd.collect_statistics "1" INI_SYSTEM  
mysqlnd.collect_memory_statistics "0" INI_SYSTEM  
mysqlnd.debug "" INI_SYSTEM  
mysqlnd.log_mask 0 INI_ALL  
mysqlnd.mempool_default_size 16000 INI_ALL  
mysqlnd.net_read_timeout "86400" INI_ALL Antes do PHP 7.2.0 o padrão era "31536000" e a mutabilidade era INI_SYSTEM
mysqlnd.net_cmd_buffer_size "4096" INI_SYSTEM  
mysqlnd.net_read_buffer_size "32768" INI_SYSTEM  
mysqlnd.sha256_server_public_key "" INI_PERDIR  
mysqlnd.trace_alloc "" INI_SYSTEM  
mysqlnd.fetch_data_copy 0 INI_ALL Removida a partir do PHP 8.1.0
Para mais detalhes e definições dos modos INI_*, consulte os Onde uma configuração deve ser definida.

Aqui está uma breve explicação das diretivas de configuração.

mysqlnd.collect_statistics bool

Permite a coleta de várias estatísticas de clientes que podem ser acessadas através de mysqli_get_client_stats() e mysqli_get_connection_stats() e também são mostradas na seção mysqlnd da saída da função phpinfo().

Esta configuração ativa todas as estatísticas do Driver Nativo MySQL exceto aquelas relacionadas ao gerenciamento de memória.

mysqlnd.collect_memory_statistics bool

Permite a coleta de várias estatísticas de clientes que podem ser acessadas através de mysqli_get_client_stats() e mysqli_get_connection_stats() e também são mostradas na seção mysqlnd da saída da função phpinfo().

Esta definição de configuração ativa as estatísticas de gerenciamento de memória dentro do conjunto geral de estatísticas do Driver Nativo MySQL.

mysqlnd.debug string

Grava a comunicação de todas as extenões que usam mysqlnd para o arquivo de registro especificado.

O formato da diretiva é mysqlnd.debug = "opção1[,parâmetro_opção1][:opção2[,parâmetro_opção2]]".

As opções para a string de formato são as seguintes:

  • A[,arquivo] - Acrescenta saída de rastreamento ao arquivo especificado. Também garante que os dados sejam gravados após cada gravação. Isso é feito fechando e reabrindo o arquivo de rastreamento (isso é lento). Isso ajuda a garantir um arquivo de registro completo caso o aplicativo falhe.

  • a[,arquivo] - Acrescenta saída de rastreamento ao arquivo especificado.

  • d - Ativa a saída de macros DBUG_<N> para o estado atual. Pode ser seguido por uma lista de palavras-chave que seleciona a saída apenas para as macros DBUG com essa palavra-chave. Uma lista vazia de palavras-chave implica em saída para todas as macros.

  • f[,funções] - Limita as ações do depurador à lista de funções especificada. Uma lista vazia de funções implica em que todas as funções são selecionadas.

  • F - Marca cada linha de saída do depurador com o nome do arquivo de origem que contém a macro que causa a saída.

  • i - Marca cada linha de saída do depurador com o PID do processo atual.

  • L - Marca cada linha de saída do depurador com o nome do número da linha do arquivo de origem da macro que causa a saída.

  • n - Marca cada linha de saída do depurador com a profundidade de aninhamento da função atual.

  • o[,arquivo] - Similar a a[,arquivo] mas sobrescreve o arquivo antigo, e não anexa.

  • O[,arquivo] - Similar a A[,arquivo] mas sobrescreve o arquivo antigo, e não anexa.

  • t[,N] - Ativa o rastreamento de fluxo de controle de função. A profundidade máxima de aninhamento é especificada por N e o padrão é 200.

  • x - Este opção ativa a criação de perfil de código.

  • m - Rastreia chamadas relacionadas à alocação e desalocação de memória.

Example:

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

Nota:

Este recurso está disponível apenas com uma compilação de depuração do PHP. Funciona no Microsoft Windows se estiver usando uma compilação de depuração de PHP e o PHP foi construído usando o Microsoft Visual C versão 9 ou superior.

mysqlnd.log_mask int

Define quais consultas serão registradas. O padrão é 0, que desativa o registro. Defina usando um número inteiro e não com constantes PHP. Por exemplo, um valor de 48 (16 + 32) registrará consultas lentas que usam 'nenhum índice bom' (SERVER_QUERY_NO_GOOD_INDEX_USED = 16) ou nenhum índice (SERVER_QUERY_NO_INDEX_USED = 32). Um valor de 2.043 (1 + 2 + 8 + ... + 1.024) registrará todos os tipos de consulta lenta.

Os tipos são os seguintes: 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 e SERVER_QUERY_WAS_SLOW=1024.

mysqlnd.mempool_default_size int

Tamanho padrão do pool de memória mysqlnd, que é usado pelos conjuntos de resultados.

mysqlnd.net_read_timeout int

mysqlnd e a Biblioteca Cliente MySQL, libmysqlclient usam APIs de rede diferentes. mysqlnd usa fluxos PHP, enquanto libmysqlclient usa seus próprio encapsulador em torno das chamadas de rede de nível operacional. O PHP, por padrão, define um tempo limite de leitura de 60s para fluxos. Isso é definido via php.ini, default_socket_timeout. Esse padrão se aplica a todos os fluxos que não definem nenhum outro valor de tempo limite. mysqlnd não define nenhum outro valor e, portanto, conexões de consultas de longa execução podem ser desconectadas após default_socket_timeout segundos, resultando em uma mensagem de erro 2006 - MySQL Server has gone away. A biblioteca cliente MySQL define um tempo limite padrão de 24 * 3600 segundos (1 dia) e espera que outros tempos limite ocorram, como tempos limites de TCP/IP. mysqlnd agora usa o mesmo tempo limite muito longo. O valor é configurável através de uma nova configuração php.ini: mysqlnd.net_read_timeout. mysqlnd.net_read_timeout é usado por qualquer extensão (ext/mysql, ext/mysqli, PDO_MySQL) que usa mysqlnd. mysqlnd diz aos fluxos PHP para usar mysqlnd.net_read_timeout. Favor observar que pode haver diferenças sutis entre MYSQL_OPT_READ_TIMEOUT da Biblioteca Cliente MySQL e fluxos PHP, por exemplo MYSQL_OPT_READ_TIMEOUT está documentado para funcionar apenas para conexões TCP/IP e, antes do MySQL 5.1.2, apenas para Windows. Os fluxos PHP podem não ter essa limitação. Por favor, verifique a documentação dos streams, em caso de dúvida.

mysqlnd.net_cmd_buffer_size int

mysqlnd aloca um buffer interno de comando/rede de mysqlnd.net_cmd_buffer_size (no php.ini) bytes para cada conexão. Se um comando do protocolo MySQL cliente-servidor, por exemplo, COM_QUERY (consulta normal), não couber no buffer, mysqlnd aumentará o buffer ao tamanho necessário para enviar o comando. Sempre que o buffer for estendido para uma conexão, command_buffer_too_small será incrementado em um.

Se mysqlnd tiver que aumentar o buffer além do tamanho inicial de mysqlnd.net_cmd_buffer_size bytes para quase todas as conexões, você deve considerar aumentar o tamanho padrão para evitar realocações.

O tamanho do buffer padrão é 4.096 bytes, que é o menor valor possível.

O valor também pode ser definido usando mysqli_options(link, MYSQLI_OPT_NET_CMD_BUFFER_SIZE, size).

mysqlnd.net_read_buffer_size int

Tamanho máximo do bloco de leitura em bytes ao ler o corpo de um pacote de comando MySQL. O protocolo cliente-servidor MySQL encapsula todos os seus comandos em pacotes. Os pacotes consistem em um pequeno cabeçalho e um corpo com a carga útil real. O tamanho do corpo está codificado no cabeçalho. mysqlnd lê o corpo em pedaços de MIN(header.size, mysqlnd.net_read_buffer_size) bytes. Se o corpo de um pacote for maior que mysqlnd.net_read_buffer_size bytes, mysqlnd terá que chamar read() múltiplas vezes.

O valor também pode ser definido usando mysqli_options(link, MYSQLI_OPT_NET_READ_BUFFER_SIZE, size).

mysqlnd.sha256_server_public_key string

Relacionado ao plug-in de autenticação SHA-256. Arquivo com a chave RSA pública do servidor MySQL.

Os clientes podem omitir a configuração de uma chave RSA pública, especificar a chave através desta configuração do PHP ou definir a chave em tempo de execução usando mysqli_options(). Se nenhum arquivo de chave RSA pública for fornecido pelo cliente, a chave será trocada como parte do procedimento de autenticação padrão do plug-in de autenticação SHA-256.

mysqlnd.trace_alloc string

mysqlnd.fetch_data_copy int

Impõe cópia de conjuntos de resultados dos buffers internos do conjunto de resultados em variáveis ​​PHP em vez de usar a referência padrão e a lógica de cópia na gravação. Por favor, veja as notas de implementação de gerenciamento de memória para mais detalhes.

Copiar conjuntos de resultados em vez de fazer referência a variáveis ​​PHP permite liberar a memória ocupada pelas variáveis ​​PHP anteriormente. Dependendo do código da API do usuário, das consultas reais do banco de dados e do tamanho de seus conjuntos de resultados, isso pode reduzir o consumo de memória do mysqlnd.

Não defina se estiver usando PDO_MySQL. PDO_MySQL ainda não foi atualizado para suportar o novo modo de busca.

Nota: Removido a partir do PHP 8.1.0

add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top