O comportamento destas funções é afetado pelas configurações do php.ini.
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 |
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.
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