PHP XDEBUG 扩展 | 文档 Xdebug 内置的垃圾回收统计分析器可以让你找出什么时候触发了 PHP 内部的垃圾回收器,有多少变量被清理,花了多长时间,以及实际释放了多少内存。 说明Xdebug 2.6 中的新功能 PHP 中的垃圾回收(GC)对内存和性能有严重的影响,所以明白其何时触发和每次运行的效率如何,可以优化你的程序。PHP 引擎不能提供有关垃圾回收的收集统计机制,但是现在 Xdebug 可以。 机器可读的这类报告目前,垃圾回收统计仅以人类可读的表格格式收集,因为没有工具可以生成机器可读的输出报告。未来的版本可能包括其他格式的报告以允许机器处理。 使用这里有两种方法以两种不同的案例开启回收 GC 统计信息。第一种完全是通过 INI 设置,主要用例是收集单独的 CLI 脚本运行的统计信息(GC 通常是个问题)。
如果你希望为你执行的每个脚本回收垃圾回收统计信息,你可以在系统上或者目录级别设置 xdebug.gc_stats_enable INI 设置。请注意,即使垃圾回收器没有运行,全局激活回收会为每个可执行脚本生成输出文件。 第二种开启回收的方法是直接在 PHP 脚本中调用函数 xdebug_start_gcstats()。这使你可以更好地控制何时开启统计回收。 通过 INI 设置和基于函数式的调用 xdebug_stop_gcstats() 的方法都可以停止回收。 表格文字(人类可读)默认的(且是目前仅支持的)垃圾回收统计信息输出格式是一个人类可读的表格文字输出。
头部包含报告的版本和生成它的 Xdebug 的版本。 这个表格本身包含每个垃圾回收运行的一行数据,每行有 7 个报告的变量:
关于 PHP 垃圾回收如何运行的细节请查看 PHP 手册的垃圾回收章节。 相关设置xdebug.gc_stats_enable
类型: bool,默认值: false,由 Xdebug >= 2.6 引入
如果这个设置启用,垃圾回收运行的统计信息会自动收集到 xdebug.gc_stats_output_dir 设置给出的目录,以及有一个由 xdebug.gc_stats_output_name 配置的自动生成的名称。 xdebug.gc_stats_output_dir
类型:字符串,默认值:/tmp
垃圾回收统计信息输出被写入的目录,需要确保运行 PHP 的用户有这个目录的写入权限。这个设置不能在脚本中用 ini_set() 设置。
xdebug.gc_stats_output_name
类型:字符串,默认值: gcstats.%p
这个设置决定了被用来转储垃圾回收统计信息的文件名称。这个设置由指定标识符指定格式,与 sprintf() 和 strftime() 非常相似。这里有几个格式标识符可以用来格式化文件名。 查看 xdebug.trace_output_name 支持的标识符的文档。 相关函数int xdebug_get_gc_run_count()
返回目前为止垃圾回收运行被触发的数量。
由 2.6 版本引入
这个函数返回当前运行脚本被触发的垃圾回收的次数。 即使 xdebug.gc_stats_enable INI 设置设为 false,这个数也可以用。 int xdebug_get_gc_total_collected_roots()
返回目前为止被收集的可变的根的数量。
由 2.6 版本引入
这个函数返回,在当前脚本中的所有垃圾回收器运行期间收集的,垃圾回收可变根的数量。 即使 xdebug.gc_stats_enable INI 设置为 false,这个数也可用。 string xdebug_get_gcstats_filename()
返回垃圾回收统计信息文件名
由 2.6 版本引入
返回被用来保存垃圾回收统计信息的文件名。 string xdebug_start_gcstats( [ string $gcstats_file ] )
开启垃圾回收统计信息的收集
由 2.6 版本引入
从这个点尝试开始垃圾回收跟踪到 gcstats_file 参数放入文件。如果函数名没有给出,那么垃圾回收统计文件将会被放置在由 xdebug.gc_stats_output_dir 配置设置的目录中。 如果给出一个文件名作为第一个参数,则名称是相对于当前工作目录的。当前工作目录可能和你所预期的不同,所以如果你指定文件名的话请使用绝对路径。使用 PHP 函数 getcwd() 能确定当前工作目录是什么。 如果 xdebug.gc_stats_enable 开启,那么文件名依赖于 xdebug.gc_stats_output_name 设置。 这个函数会返回 Xdebug 收集的统计信息的全路径和文件名。这将是你传入的文件名,或者没有传入文件名时自动生成的文件名。 string xdebug_stop_gcstats()
停止当前的垃圾回收统计信息的收集
由 2.6 版本引入
停止垃圾回收统计信息的收集并且关闭输出文件。 这个函数返回统计信息被写入的文件的文件名。 |
||