WordPress 性能监控:查询次数、执行时间与内存占用
在 WordPress 开发或性能优化过程中,了解页面的数据库查询次数、PHP 执行时间以及内存消耗是非常有用的。本文将介绍一个简单实用的函数,用于在页面中显示或隐藏这些性能指标。
核心性能监控函数
将以下代码添加到您当前主题的 functions.php 文件中:
// 显示页面查询次数、加载时间和内存占用
function performance( $visible = false ) {
$stat = sprintf(
'%d queries in %.3f seconds, using %.2fMB memory',
get_num_queries(),
timer_stop( 0, 3 ),
memory_get_peak_usage() / 1024 / 1024
);
echo $visible ? $stat : "";
}
函数说明:
get_num_queries(): 获取当前页面加载过程中执行的数据库查询总次数。timer_stop( 0, 3 ): 获取页面从开始加载到调用此函数时的 PHP 执行时间(以秒为单位),参数3表示保留 3 位小数。memory_get_peak_usage(): 获取 PHP 脚本执行过程中消耗的峰值内存(以字节为单位)。除以1024 / 1024后转换为 MB。- 参数
$visible: 控制输出方式。为true时直接在页面中显示;为false时则输出为 HTML 注释,仅在查看网页源代码时可见。
调用方法
在您希望显示性能数据的地方(例如主题的 footer.php 文件),插入以下调用代码:
<?php if (function_exists('performance')) performance(false); ?>
将参数 false 改为 true,即可在前端页面直接显示统计信息。
推荐方法:通过钩子自动加载
更推荐的做法是将性能监控函数挂载到 WordPress 的 wp_footer 钩子上,这样它会自动在页面底部加载。请确保您的主题模板文件(通常是 footer.php)中包含 <?php wp_footer(); ?> 调用。
在 functions.php 文件的性能函数定义之后,添加以下代码:
add_action( 'wp_footer', 'performance', 20 );
默认情况下,此方式会将统计信息输出为 HTML 注释。若需在前端显示,需要修改 performance 函数,将其默认参数改为 true,或者通过过滤器动态控制。
高级用法:动态控制显示
您可以通过以下改进,更灵活地控制输出:
// 改进版:可通过过滤器动态控制可见性
function performance_enhanced() {
// 默认在管理后台前端显示,对访客隐藏(仅源码可见)
$visible = apply_filters( 'show_performance_stats', current_user_can( 'manage_options' ) );
$stat = sprintf(
'%d queries in %.3f seconds, using %.2fMB memory',
get_num_queries(),
timer_stop( 0, 3 ),
memory_get_peak_usage() / 1024 / 1024
);
echo $visible ? '<div class="performance-stats">' . esc_html($stat) . '</div>' : "";
}
add_action( 'wp_footer', 'performance_enhanced', 20 );
此版本允许管理员在前端直接查看性能数据,而普通访客则看不到。您还可以通过添加 add_filter( 'show_performance_stats', '__return_true' ); 来为所有用户开启前端显示。
注意: 此功能主要用于开发和调试环境,在生产环境中建议关闭前端显示,或仅对管理员开放,以避免暴露不必要的系统信息。