中的设置会影响这些函数的行为php . ini
.
表7.1 MySQL本地驱动程序配置选项
的名字 | 默认的 | 多变的 | 更新日志 |
---|---|---|---|
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_*模式的更多详细信息和定义,请参见http://www.php.net/manual/en/configuration.changes.modes.
下面是配置指令的简短解释。
-
mysqlnd.collect_statistics
保龄球 -
启用各种客户机统计信息的收集,可以通过这些统计信息进行访问
mysqli_get_client_stats
,mysqli_get_connection_stats
,见mysqlnd
节的输出phpinfo
函数。此配置设置启用所有MySQL本地驱动统计数据内存管理除外。
-
mysqlnd.collect_memory_statistics
保龄球 -
启用可以访问的各种内存统计信息的收集
mysqli_get_client_stats
,mysqli_get_connection_stats
,见mysqlnd
节的输出phpinfo
函数。的总体集合中的内存管理统计信息MySQL本地驱动统计数据.
-
mysqlnd.debug
字符串 -
记录来自所有扩展的通信使用
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] -类似于[,file],但覆盖旧文件,不追加。
O[,file] -类似于A[,file],但覆盖旧文件,不追加。
t[,N]—启用功能控制流跟踪。最大嵌套深度由N指定,默认为200。
x -该选项激活分析。
跟踪内存分配和回收相关的调用。
例子:
d: t: x:啊,/ 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, SERVER_QUERY_WAS_SLOW=1024。
-
mysqlnd.mempool_default_size
int -
mysqlnd内存池的默认大小,由结果集使用。
-
mysqlnd.net_read_timeout
int -
mysqlnd
MySQL客户端库,libmysqlclient
使用不同的网络api。mysqlnd
使用PHP流,而libmysqlclient
在操作级网络调用周围使用自己的包装器。默认情况下,PHP将流的读取超时时间设置为60s。这是通过php . ini
,default_socket_timeout
.此默认值适用于所有未设置其他超时值的流。mysqlnd
是否不设置任何其他值,因此长时间运行的查询连接后可以断开default_socket_timeout
秒导致一个错误消息”2006年的今天,MySQL服务器已经消失”.MySQL客户端库设置默认超时为24 * 3600秒(1天),并等待其他超时发生,如TCP/IP超时。mysqlnd
现在使用相同的非常长的超时。该值可以通过newphp . ini
设置:mysqlnd.net_read_timeout
.mysqlnd.net_read_timeout
被任何扩展(ext / mysql
,ext / mysqli
,PDO_MySQL
),使用mysqlnd
.mysqlnd
告诉PHP流要使用mysqlnd.net_read_timeout
.请注意,两者之间可能存在微妙的差异MYSQL_OPT_READ_TIMEOUT
从MySQL客户端库和PHP流,例如MYSQL_OPT_READ_TIMEOUT
在MySQL 5.1.2之前,它只适用于TCP/IP连接。PHP流可能没有这个限制。如果有疑问,请检查流文档。10bet官方网站 -
mysqlnd.net_cmd_buffer_size
int -
mysqlnd
的内部命令/网络缓冲区mysqlnd.net_cmd_buffer_size
(在php . ini
)字节为每个连接。例如,如果MySQL客户端服务器协议命令,COM_QUERY
(”正常的”查询),不适合缓冲区,mysqlnd
将增加缓冲区到发送命令所需的大小。每当缓冲区为一个连接扩展时,command_buffer_too_small
会加1。如果
mysqlnd
必须将缓冲区增长到超过其初始大小的mysqlnd.net_cmd_buffer_size
对于几乎每个连接的字节,您应该考虑增加默认大小,以避免重新分配。默认的缓冲区大小是4096字节,这是可能的最小值。
该值也可以使用
mysqli_options(链接、MYSQLI_OPT_NET_CMD_BUFFER_SIZE大小)
. -
mysqlnd.net_read_buffer_size
int -
读取MySQL命令包体时的最大读块大小(以字节为单位)。MySQL客户端服务器协议将它的所有命令封装在包中。数据包由一个小的头和一个带有实际有效负载的正文组成。主体的大小编码在头文件中。
mysqlnd
的块读取体MIN(头。尺寸、mysqlnd.net_read_buffer_size)
字节。如果报文正文大于mysqlnd.net_read_buffer_size
字节,mysqlnd
已经打电话给read ()
很多次了。该值也可以使用
mysqli_options(链接、MYSQLI_OPT_NET_READ_BUFFER_SIZE大小)
. -
mysqlnd.sha256_server_public_key
字符串 -
SHA-256认证插件相关。包含MySQL服务器公共RSA密钥的文件。
客户端可以忽略公共RSA密钥的设置,通过这个PHP配置设置指定密钥,或者在运行时使用
mysqli_options
.如果客户端没有提供公共的RSA密钥文件,那么密钥将作为标准SHA-256认证插件认证过程的一部分进行交换。 -
mysqlnd.trace_alloc
字符串 -
mysqlnd.fetch_data_copy
int -
强制将结果集从内部结果集缓冲区复制到PHP变量中,而不是使用默认的引用和写时复制逻辑。请,请参阅内存管理实现说明为进一步的细节。
复制结果集,而不是让PHP变量引用结果集,可以释放先前为PHP变量所占用的内存。根据用户API代码、实际数据库查询及其结果集的大小,这可能会减少mysqlnd的内存占用。
如果使用PDO_MySQL,请不要设置。PDO_MySQL还没有更新以支持新的获取模式。