ฉันจะลบคีย์เด็กกำพร้าในตารางฐานข้อมูล WordPress ได้อย่างไร


10

wp_optionsโดยเฉพาะอย่างยิ่งในตาราง หลังจากเกือบ 2 ปีของการผลิตบล็อกดูเหมือนว่าจะเพิ่มขึ้นเป็นจำนวนมากและฉันไม่รู้ว่ามีจำนวนอึอยู่ในนั้น

คุณรู้หรือไม่ว่าปลั๊กอินที่ใช้งานกับ WordPress 3.0 หรือคำค้นหาที่ปลอดภัยเพื่อเรียกใช้เพื่อค้นหาคีย์ / แถวเด็กกำพร้า?

คำตอบ:


7

ไม่มีข้อความค้นหาที่แน่นอนว่าจะลบทุกอย่างที่ไม่ได้ใช้ 100% และไม่ลบสิ่งเหล่านั้นเพราะธีมหรือปลั๊กอินใด ๆ สามารถเพิ่มตัวเลือกลงในwp_optionsตาราง ถึงกระนั้นด้วยความพยายามเพียงเล็กน้อยคุณก็จะได้ความคิดที่ดีเกี่ยวกับสิ่งที่ไม่ได้ใช้งานแล้วตัดสินใจด้วยตนเองว่าจะลบอะไรและไม่ควรทำอะไร

คุณสามารถใส่รหัสต่อไปนี้ลงในfunctions.phpไฟล์ธีมของคุณชั่วคราวจากนั้นไปที่ทุกหน้า (ประเภทของ) บนเว็บไซต์สาธารณะของคุณและที่สำคัญกว่านั้นคือหน้าผู้ดูแลระบบทั้งหมดในคอนโซลผู้ดูแลระบบ เมื่อคุณทำเสร็จแล้วคุณสามารถเปิดwp_optionsตารางและดูที่ฟิลด์use_count(เพิ่มด้วยรหัสด้านล่าง) เพื่อดูว่าตัวเลือกใดมีuse_countค่าเท่ากับศูนย์ (การนับการใช้ส่วนใหญ่ไม่มีความหมายนอกเหนือจากสิ่งใดที่มากกว่า 1 ถูกอ่านหรืออัปเดต อย่างน้อยหนึ่งครั้งตั้งแต่คุณเพิ่มรหัสนี้)

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'");
}

ด้วยวิธีนี้คุณจะสามารถระบุตัวเลือกที่เกี่ยวข้องกับปลั๊กอินที่หายไปนานชุดรูปแบบเดิมและตัวเลือกของคุณเองที่คุณเพิ่มไว้ก่อนหน้า แต่ไม่ได้ใช้อีกต่อไป ส่งออกข้อมูลทั้งหมดไปยังการสำรองข้อมูล (ในกรณี) จากนั้นลบสิ่งที่คุณต้องการลบออก เมื่อคุณทำเสร็จแล้วคุณสามารถลบuse_countฟิลด์ (ถ้าคุณไม่ต้องการให้มันอยู่ตรงนั้น) และลบโค้ดด้านบนออกจากfunctions.phpไฟล์ของคุณด้วย

แม้ว่ามันจะยังไม่สมบูรณ์แบบ แต่ก็ยังดีกว่าไม่มีอะไรมาก หวังว่าจะช่วยได้?


ฉันขอแนะนำ memcached / incr () สำหรับเรื่องนี้แทนที่จะเขียน db จำนวนมาก
Denis de Bernardy

3
@Denis - เนื่องจาก memcached ต้องมีการตั้งค่าเซิร์ฟเวอร์ขั้นสูงซึ่งไม่สามารถทำได้บนเซิร์ฟเวอร์ที่ใช้ร่วมกันซึ่งเป็นที่ตั้งของไซต์ WordPress ส่วนใหญ่และเนื่องจากนี่เป็นขั้นตอนการวินิจฉัยครั้งเดียวหรือเป็นครั้งคราวฉันไม่เห็นสาเหตุที่คุณต้องเน้นความต้องการ สำหรับ memcached สำหรับกรณีใช้งานนี้หรือไม่ บางทีฉันอาจจะพลาดบางสิ่งคุณสามารถบอกรายละเอียดว่าทำไมคนที่ต้องย้ายไปยัง VPS หรือเซิร์ฟเวอร์เฉพาะและเรียนรู้วิธีหรือรับคนที่จะกำหนดค่า memcached ควรทำเช่นนั้นเพื่อหลีกเลี่ยงความนิยมของฐานข้อมูลจำนวนมาก ใช้การบำรุงรักษาประจำ?
MikeSchinkel

4

ตัวเลือกทำความสะอาดปลั๊กอินทำงานได้ดีสำหรับฉัน คำอธิบายของผู้เขียนของปลั๊กอินดูเหมือนจะพอดีกับสิ่งที่คุณต้องการ: "ค้นหาตัวเลือกเด็กกำพร้าและอนุญาตให้มีการลบออกจากตาราง wp_options"

ฉันยังไม่ได้ลองWP-Optimizeเป็นการส่วนตัว แต่สิ่งนั้นก็ดูมีแนวโน้มเช่นกัน และมันบอกว่ามันรองรับ WP 2.7 (ในขณะที่ตัวเลือกที่สะอาดกล่าวถึงเฉพาะการสนับสนุนที่ชัดเจนสำหรับ WP 2.3), ดีมาก!


2

สิ่งนี้ไม่จำเป็นต้องลบปัญหาด้วยwp_optionsแต่ฉันใช้WP-Optimizeเพื่อแก้ไขปัญหาการปรับขนาดฐานข้อมูลจำนวนมากในไซต์ 3.0 ของฉัน มันจะล้างการแก้ไขโพสต์ที่ไม่จำเป็นความคิดเห็นสแปมและสามารถแก้ไขปัญหาได้มากมายโดยอัตโนมัติ ในบล็อกหลักของฉันฐานข้อมูลลดลงจาก 30MB เหลือเพียง 6MB และทำงานได้อย่างราบรื่นมากขึ้นในขณะนี้


1

ฉันรันทั้ง Clean Options และ WP_Optimize บนเว็บไซต์ของฉันและคอมโบนั้นเป็นงานที่ยอดเยี่ยมในการรักษาฐานข้อมูลให้อยู่ในสภาพที่ดี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.