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
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
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
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:
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
mysqlnd.mempool_default_size
int
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 fluxos, 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
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
mysqlnd.trace_alloc
string
mysqlnd.fetch_data_copy
int
Nota: Removido a partir do PHP 8.1.0