zimoli
  • 用户中心
    • 登录 / 注册
  • 快速搜索
  • 技术支持
    • 提交问题
    • 查看全部问题
  • 快捷操作
    • 上个内容
    • 下个内容
    • 页面顶部
    • 用户评论
    • 页面底部
  • 示例页面
    • 通知公告中心
    • 未发布通知公告
    • 技术支持中心
    • 没有提问或工单
    • 打开购物车
    • 您的购物车为空
    • 图文模式
    • 文本模式
    • 精简模式
  • 登录 / 注册
    • 没有账号注册

  • 测试
  • 未分类
  • 大师傅士大夫撒旦
0

大师傅士大夫撒旦

2025年12月7日58

<?php
/**
 * Plugin Name:       性能调试
 * Plugin URI:        https://www.zimoli.me/zml-plugin-debug/
 * Description:       紫茉莉-性能调试,提供性能相关信息快速查看功能的插件。
 * Version:           2.2.0
 * Author:            紫茉莉.ME
 * Author URI:        https://www.zimoli.me
 * Requires at least: 5.6
 * Requires PHP:      7.3
 * License:           GPLv3
 * License URI:       https://www.gnu.org/licenses/gpl-3.0.html
 */

//* 检查访问
defined( 'ABSPATH' ) or die( 'Access Denied' );

//* 判断是否启用使用
define( 'ZMLDEBUG_PRESENT', TRUE );

//* 全局常量
define( 'ZMLDEBUG_URL', plugin_dir_url( __FILE__ ) );
define( 'ZMLDEBUG_PATH', plugin_dir_path( __FILE__ ) );
if ( ! defined( 'SAVEQUERIES' ) ) {
	define( 'SAVEQUERIES', TRUE );
}

add_action( 'wp_footer', 'zmldebug_loader' );

//* 加载
function zmldebug_loader() {

	$debug = $_GET['debug'] ?? '';
	
	zmldebug_status();
	
	if ( $debug ) {
		switch ( $debug ) {
			case 'q':
				zmldebug_query();
				break;
			case 'c':
				echo '<script>window.open("' . esc_url( ZMLDEBUG_URL . 'cron.php' ) . '");</script>';
				break;
			case 'r':
				echo '<script>window.open("' . esc_url( ZMLDEBUG_URL . 'rewrite.php' ) . '");</script>';
				break;
			case 'o':
				echo '<script>window.open("' . esc_url( ZMLDEBUG_URL . 'opcache.php' ) . '");</script>';
				break;
			case 'm':
				echo '<script>window.open("' . esc_url( ZMLDEBUG_URL . 'memcache.php' ) . '");</script>';
				break;
		}
		if ( $debug !== 'q' ) {
			zmldebug_tips();
		}
	} else {
		zmldebug_tips();
	}
	
}

//* 使用提示
function zmldebug_tips() {
	
	echo '<script>console.log("?debug=");</script>';
	echo '<script>console.log("q -> 显示查询信息");</script>';
	echo '<script>console.log("c -> 查看计划任务");</script>';
	echo '<script>console.log("r -> 查看 Rewrite 规则");</script>';
	echo '<script>console.log("o -> 查看 OPcache 信息");</script>';
	echo '<script>console.log("m -> 查看 Memcache 信息");</script>';
	echo '<script>console.log("\n\r");</script>';
	
}

//* 运行统计
function zmldebug_status() {
	
	$status = sprintf( '本页加载用时 %.3f 秒,共执行 %d 次查询,峰值耗费 %.2fMB 内存。', timer_stop( 0, 3 ), get_num_queries(), memory_get_peak_usage() / 1024 / 1024 );
	echo '<script>console.log("\n\r");</script>';
	echo "<script>console.log('" . esc_attr( $status ) . "');</script>";
	echo '<script>console.log("\n\r");</script>';
	
}

//* 查询明细
function zmldebug_query() {
	
	global $wpdb;
	$queries = $wpdb->queries;
	if ( is_array( $queries ) ) {
		echo '<script>console.groupCollapsed("按执行顺序");</script>';
		zmldebug_output( $queries );
		echo '<script>console.groupEnd();</script>';
		array_multisort( array_column( $queries, 1 ), SORT_DESC, $queries );
		echo '<script>console.groupCollapsed("按执行耗时");</script>';
		zmldebug_output( $queries );
		echo '<script>console.groupEnd();</script>';
	}
	
}

//* 输出信息
function zmldebug_output( $queries ) {

	echo '<script>console.log("\n\r");</script>';
	foreach ( $queries as $key => $query ) {
		echo '<script>console.log("' . esc_attr( $key + 1 ) . '");</script>';
		foreach ( $query as $key => $value ) {
			if ( is_array( $value ) ) {
				echo $value ? "<script>console.log('" . json_encode( $value ) . "');</script>" : '';
				echo '<script>console.log("\n\r");</script>';
			} else {
				$value = str_replace( "'", '"', $value );
				echo "<script>console.log('" . json_encode( $value ) . "');</script>";
			}
		}
	}
	echo '<script>console.log("\n\r");</script>';

}

//* 后台页面
if ( is_admin() ) {
	require_once ZMLDEBUG_PATH . 'about.php';
}

 


初始发布:2025年12月7日

TAGS:无标签
上个内容
下个内容
共 0 条评论

还没有任何评论!

发表评论 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

快速搜索

最新内容

缩略图
ddddd
320
缩略图
dsffsdf
170
缩略图
额外
90
缩略图
111111
920
缩略图
121231
900

标签列表