Làm cách nào để xóa khóa mồ côi trong bảng cơ sở dữ liệu WordPress?


10

Đặc biệt trong bảng wp_options. Sau gần 2 năm sản xuất blog, nó dường như tăng lên rất nhiều và tôi không biết có bao nhiêu thứ nhảm nhí trong đó.

Bạn có biết một plugin hoạt động với WordPress 3.0 hoặc truy vấn an toàn để chạy để tìm kiếm các khóa / hàng mồ côi không?

Câu trả lời:


7

Không có truy vấn nào chắc chắn 100% để xóa mọi thứ không sử dụng và không xóa những thứ đó vì bất kỳ chủ đề hoặc plugin nào cũng có thể thêm tùy chọn vào wp_optionsbảng. Tuy nhiên, với một chút nỗ lực, bạn có thể có được một ý tưởng khá hay về những thứ không được sử dụng và sau đó tự quyết định những thứ cần xóa và những thứ không nên xóa.

Bạn có thể tạm thời đặt đoạn mã sau vào functions.phptệp của chủ đề và sau đó truy cập mọi trang (loại) trên trang web công khai của bạn và quan trọng hơn là tất cả các trang quản trị trong bảng điều khiển quản trị. Khi bạn đã hoàn tất, bạn có thể mở wp_optionsbảng của mình và xem trường use_count(được thêm bởi mã bên dưới) để xem tùy chọn nào có giá trị use_countbằng 0 (số lượng sử dụng chủ yếu là vô nghĩa ngoài mọi thứ lớn hơn 1 đã được đọc hoặc cập nhật ít nhất một lần kể từ khi bạn thêm mã này.)

global $wpdb;
header('Content-Type:text/plain');
$results = $wpdb->get_results("SHOW COLUMNS FROM wp_options WHERE Field='use_count'");
if (count($results)==0) {
    $wpdb->query("ALTER TABLE {$wpdb->options} ADD COLUMN use_count int UNSIGNED NOT NULL DEFAULT '0' AFTER autoload");
}

add_action('all','monitor_get_option_usage');
function monitor_get_option_usage($filter){
    if (preg_match('#^option_(.*)$#',$filter)) {
        increment_option_use_count(substr($filter,7));
    }
}
add_action('updated_option','monitor_update_option_usage');
function monitor_update_option_usage($option){
    increment_option_use_count($option);
}
function increment_option_use_count($option) {
    global $wpdb;
    $wpdb->query("UPDATE {$wpdb->options} SET use_count = use_count + 1 WHERE option_name = '$option'");
}

Với điều này, có lẽ bạn sẽ có thể xác định các tùy chọn được liên kết với các plugin đã có từ lâu, các chủ đề trước đây và thậm chí các tùy chọn của riêng bạn mà bạn đã thêm sớm nhưng không còn sử dụng. Xuất tất cả chúng vào một bản sao lưu (chỉ trong trường hợp) và sau đó xóa những cái bạn cảm thấy thoải mái khi xóa. Khi bạn đã hoàn tất, bạn có thể xóa use_counttrường này (nếu bạn muốn, không làm tổn thương đến nó ở đó) và cũng xóa mã ở trên khỏi functions.phptệp của bạn .

Mặc dù điều này vẫn chưa hoàn hảo nhưng nó tốt hơn nhiều so với không có gì. Hy vọng nó giúp?


Tôi muốn mạnh mẽ khuyên memcached / incr () cho việc này thay vì một lượng tiềm năng khổng lồ ghi db.
Denis de Bernardy

3
@Denis - Vì memcached yêu cầu thiết lập máy chủ nâng cao, thậm chí không thể có trên máy chủ dùng chung, nơi hầu hết các trang web WordPress được lưu trữ và vì đây là thói quen chẩn đoán một lần hoặc thỉnh thoảng tôi không hiểu tại sao bạn nhấn mạnh đến nhu cầu cho memcached cho trường hợp sử dụng này ? Có lẽ tôi đang thiếu một cái gì đó, bạn có thể nói chi tiết lý do tại sao một người nào đó phải chuyển sang VPS hoặc máy chủ chuyên dụng và tìm hiểu cách hoặc để ai đó định cấu hình memcached nên làm như vậy chỉ để tránh một số lượng lớn các lần truy cập cơ sở dữ liệu sử dụng thường xuyên bảo trì?
MikeSchinkel

4

Plugin Clean Options đã hoạt động tốt với tôi. Mô tả của tác giả về plugin dường như phù hợp với những gì bạn cần: "Tìm các tùy chọn mồ côi và cho phép loại bỏ chúng khỏi bảng wp_options."

Tôi chưa từng thử WP-Optimize nhưng cá nhân tôi cũng có triển vọng. Và nó nói rằng nó hỗ trợ WP 2.7 (trong khi Clean Options chỉ đề cập đến hỗ trợ nhất định cho WP 2.3), thật tuyệt!


2

Điều này sẽ không nhất thiết phải loại bỏ các vấn đề với wp_optionsnhưng tôi đã sử dụng WP-Optimize để khắc phục nhiều sự cố kích thước cơ sở dữ liệu trên các trang web 3.0 của mình. Nó xóa các sửa đổi bài viết không cần thiết, bình luận spam và có thể tự động khắc phục rất nhiều vấn đề. Trên blog chính của tôi, DB đã giảm từ 30MB xuống chỉ còn dưới 6 MB và bây giờ chạy trơn tru hơn nhiều.


1

Tôi chạy cả Tùy chọn Sạch và WP_Optizing trên trang web của mình và kết hợp thực hiện công việc tuyệt vời là giữ cho cơ sở dữ liệu ở trạng thái tốt.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.