7.3运行时配置

PHP文档组版权所有。10bet官方网站

中的设置会影响这些函数的行为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_statsmysqli_get_connection_stats,见mysqlnd节的输出phpinfo函数。

此配置设置启用所有MySQL本地驱动统计数据内存管理除外。

mysqlnd.collect_memory_statistics保龄球

启用可以访问的各种内存统计信息的收集mysqli_get_client_statsmysqli_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_maskint

定义将记录哪些查询。默认值为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_sizeint

mysqlnd内存池的默认大小,由结果集使用。

mysqlnd.net_read_timeoutint

mysqlndMySQL客户端库,libmysqlclient使用不同的网络api。mysqlnd使用PHP流,而libmysqlclient在操作级网络调用周围使用自己的包装器。默认情况下,PHP将流的读取超时时间设置为60s。这是通过php . inidefault_socket_timeout.此默认值适用于所有未设置其他超时值的流。mysqlnd是否不设置任何其他值,因此长时间运行的查询连接后可以断开default_socket_timeout秒导致一个错误消息2006年的今天,MySQL服务器已经消失.MySQL客户端库设置默认超时为24 * 3600秒(1天),并等待其他超时发生,如TCP/IP超时。mysqlnd现在使用相同的非常长的超时。该值可以通过newphp . ini设置:mysqlnd.net_read_timeoutmysqlnd.net_read_timeout被任何扩展(ext / mysqlext / mysqliPDO_MySQL),使用mysqlndmysqlnd告诉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_sizeint

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_sizeint

读取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_copyint

强制将结果集从内部结果集缓冲区复制到PHP变量中,而不是使用默认的引用和写时复制逻辑。请,请参阅内存管理实现说明为进一步的细节。

复制结果集,而不是让PHP变量引用结果集,可以释放先前为PHP变量所占用的内存。根据用户API代码、实际数据库查询及其结果集的大小,这可能会减少mysqlnd的内存占用。

如果使用PDO_MySQL,请不要设置。PDO_MySQL还没有更新以支持新的获取模式。