<?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日

还没有任何评论!