From 2e984c7394c32169e7925faf8aefb35f7eee8a11 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=BA=91=E8=90=BD?= Date: Mon, 27 Jan 2020 02:49:22 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- class/wp-clean-up.php | 403 +++++++++++++++++++++++++++++++++++ framework/plugin-options.php | 14 +- gdk_route.php | 1 + 3 files changed, 414 insertions(+), 4 deletions(-) create mode 100644 class/wp-clean-up.php diff --git a/class/wp-clean-up.php b/class/wp-clean-up.php new file mode 100644 index 0000000..ad535e0 --- /dev/null +++ b/class/wp-clean-up.php @@ -0,0 +1,403 @@ + +
+ +

WP数据库优化

+ +posts WHERE post_type = 'revision'"; + $wpdb->query($wcu_sql); + break; + case "draft": + $wcu_sql = "DELETE FROM $wpdb->posts WHERE post_status = 'draft'"; + $wpdb->query($wcu_sql); + break; + case "autodraft": + $wcu_sql = "DELETE FROM $wpdb->posts WHERE post_status = 'auto-draft'"; + $wpdb->query($wcu_sql); + break; + case "moderated": + $wcu_sql = "DELETE FROM $wpdb->comments WHERE comment_approved = '0'"; + $wpdb->query($wcu_sql); + break; + case "spam": + $wcu_sql = "DELETE FROM $wpdb->comments WHERE comment_approved = 'spam'"; + $wpdb->query($wcu_sql); + break; + case "trash": + $wcu_sql = "DELETE FROM $wpdb->comments WHERE comment_approved = 'trash'"; + $wpdb->query($wcu_sql); + break; + case "postmeta": + $wcu_sql = "DELETE pm FROM $wpdb->postmeta pm LEFT JOIN $wpdb->posts wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL"; + $wpdb->query($wcu_sql); + break; + case "commentmeta": + $wcu_sql = "DELETE FROM $wpdb->commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM $wpdb->comments)"; + $wpdb->query($wcu_sql); + break; + case "relationships": + $wcu_sql = "DELETE FROM $wpdb->term_relationships WHERE term_taxonomy_id=1 AND object_id NOT IN (SELECT id FROM $wpdb->posts)"; + $wpdb->query($wcu_sql); + break; + case "feed": + $wcu_sql = "DELETE FROM $wpdb->options WHERE option_name LIKE '_site_transient_browser_%' OR option_name LIKE '_site_transient_timeout_browser_%' OR option_name LIKE '_transient_feed_%' OR option_name LIKE '_transient_timeout_feed_%'"; + $wpdb->query($wcu_sql); + break; + } +} + +function wp_clean_up_count($type){ + global $wpdb; + switch($type){ + case "revision": + $wcu_sql = "SELECT COUNT(*) FROM $wpdb->posts WHERE post_type = 'revision'"; + $count = $wpdb->get_var($wcu_sql); + break; + case "draft": + $wcu_sql = "SELECT COUNT(*) FROM $wpdb->posts WHERE post_status = 'draft'"; + $count = $wpdb->get_var($wcu_sql); + break; + case "autodraft": + $wcu_sql = "SELECT COUNT(*) FROM $wpdb->posts WHERE post_status = 'auto-draft'"; + $count = $wpdb->get_var($wcu_sql); + break; + case "moderated": + $wcu_sql = "SELECT COUNT(*) FROM $wpdb->comments WHERE comment_approved = '0'"; + $count = $wpdb->get_var($wcu_sql); + break; + case "spam": + $wcu_sql = "SELECT COUNT(*) FROM $wpdb->comments WHERE comment_approved = 'spam'"; + $count = $wpdb->get_var($wcu_sql); + break; + case "trash": + $wcu_sql = "SELECT COUNT(*) FROM $wpdb->comments WHERE comment_approved = 'trash'"; + $count = $wpdb->get_var($wcu_sql); + break; + case "postmeta": + $wcu_sql = "SELECT COUNT(*) FROM $wpdb->postmeta pm LEFT JOIN $wpdb->posts wp ON wp.ID = pm.post_id WHERE wp.ID IS NULL"; + //$wcu_sql = "SELECT COUNT(*) FROM $wpdb->postmeta WHERE NOT EXISTS ( SELECT * FROM $wpdb->posts WHERE $wpdb->postmeta.post_id = $wpdb->posts.ID )"; + $count = $wpdb->get_var($wcu_sql); + break; + case "commentmeta": + $wcu_sql = "SELECT COUNT(*) FROM $wpdb->commentmeta WHERE comment_id NOT IN (SELECT comment_id FROM $wpdb->comments)"; + $count = $wpdb->get_var($wcu_sql); + break; + case "relationships": + $wcu_sql = "SELECT COUNT(*) FROM $wpdb->term_relationships WHERE term_taxonomy_id=1 AND object_id NOT IN (SELECT id FROM $wpdb->posts)"; + $count = $wpdb->get_var($wcu_sql); + break; + case "feed": + $wcu_sql = "SELECT COUNT(*) FROM $wpdb->options WHERE option_name LIKE '_site_transient_browser_%' OR option_name LIKE '_site_transient_timeout_browser_%' OR option_name LIKE '_transient_feed_%' OR option_name LIKE '_transient_timeout_feed_%'"; + $count = $wpdb->get_var($wcu_sql); + break; + } + return $count; +} + +function wp_clean_up_optimize(){ + global $wpdb; + $wcu_sql = 'SHOW TABLE STATUS FROM `'.DB_NAME.'`'; + $result = $wpdb->get_results($wcu_sql); + foreach($result as $row){ + $wcu_sql = 'OPTIMIZE TABLE '.$row->Name; + $wpdb->query($wcu_sql); + } +} + + $wcu_message = ''; + + if(isset($_POST['wp_clean_up_revision'])){ + wp_clean_up('revision'); + $wcu_message = "所有修改版本已删除!"; + } + + if(isset($_POST['wp_clean_up_draft'])){ + wp_clean_up('draft'); + $wcu_message = "所有草稿已删除!"; + } + + if(isset($_POST['wp_clean_up_autodraft'])){ + wp_clean_up('autodraft'); + $wcu_message = "所有自动草稿已删除!"; + } + + if(isset($_POST['wp_clean_up_moderated'])){ + wp_clean_up('moderated'); + $wcu_message = "所有待审评论已删除!"; + } + + if(isset($_POST['wp_clean_up_spam'])){ + wp_clean_up('spam'); + $wcu_message = "所有垃圾评论已删除!"; + } + + if(isset($_POST['wp_clean_up_trash'])){ + wp_clean_up('trash'); + $wcu_message = "所有回收站评论已删除!"; + } + + if(isset($_POST['wp_clean_up_postmeta'])){ + wp_clean_up('postmeta'); + $wcu_message = "所有孤立的文章元信息!"; + } + + if(isset($_POST['wp_clean_up_commentmeta'])){ + wp_clean_up('commentmeta'); + $wcu_message = "所有孤立的评论元信息!"; + } + + if(isset($_POST['wp_clean_up_relationships'])){ + wp_clean_up('relationships'); + $wcu_message = "所有孤立的关系信息!"; + } + + if(isset($_POST['wp_clean_up_feed'])){ + wp_clean_up('feed'); + $wcu_message = "所有控制板订阅缓存!"; + } + + + + if(isset($_POST['wp_clean_up_all'])){ + wp_clean_up('revision'); + wp_clean_up('draft'); + wp_clean_up('autodraft'); + wp_clean_up('moderated'); + wp_clean_up('spam'); + wp_clean_up('trash'); + wp_clean_up('postmeta'); + wp_clean_up('commentmeta'); + wp_clean_up('relationships'); + wp_clean_up('feed'); + $wcu_message = "所有冗余数据已删除!"; + } + + if(isset($_POST['wp_clean_up_optimize'])){ + wp_clean_up_optimize(); + $wcu_message = "数据库已优化!"; + } + + if($wcu_message != ''){ + echo '

' . $wcu_message . '

'; + } +?> + +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
类型数量操作
+ 修订版本 + + + +
+ + +
+
+ 草稿 + + + +
+ + +
+
+ 自动草稿 + + + +
+ + +
+
+ 待审评论 + + + +
+ + +
+
+ 垃圾评论 + + + +
+ + +
+
+ 回收站评论 + + + +
+ + +
+
+ 孤立的文章元信息 + + + +
+ + +
+
+ 孤立的评论元信息 + + + +
+ + +
+
+ 孤立的关系信息 + + + +
+ + +
+
+ 控制板订阅缓存 + + + +
+ + +
+
+

+

+

+ + +
+

+
+ + + + + + + + + + get_results($wcu_sql); + + foreach($result as $row){ + + $table_size = $row->Data_length + $row->Index_length; + $table_size = $table_size / 1024; + $table_size = sprintf("%0.3f",$table_size); + + $every_size = $row->Data_length + $row->Index_length; + $every_size = $every_size / 1024; + $total_size += $every_size; + + echo " + + + \n"; + $alternate = (empty($alternate)) ? " class='alternate'" : ""; + } + ?> + + + + + + + +
数据表大小
". $row->Name ."". $table_size ." KB"."
总共
+

+

+ + +
+

+ + $name ) { echo '
  • ' . $name . '
  • '; } ?> +
  • 数据清理
  • 关于主题
  • @@ -161,7 +162,11 @@ switch ( $type ) { $index++; } ?> - +
    + + +
    +
    @@ -204,19 +209,20 @@ switch ( $type ) {
    -

    +


    +

    -
    +

    -
    +

    diff --git a/gdk_route.php b/gdk_route.php index a95f4c9..56c71d9 100644 --- a/gdk_route.php +++ b/gdk_route.php @@ -37,6 +37,7 @@ if (version_compare(PHP_VERSION, '7.2.26', '>=')) { } //include('modules/base/main.php'); +include('class/wp-clean-up.php'); include('framework/plugin-options.php'); include('functions/func_load.php');