ລາຍການຫົວເລື່ອງ
ສິ່ງທີ່ຮ້າຍແຮງທີ່ສຸດສຳລັບເວັບເຊີບເວີບໍ່ແມ່ນເວລາທີ່ບໍ່ເຮັດວຽກ, ແຕ່ເປັນການຖືກດຶງລົງໂດຍໜ້າວຽກທີ່ບໍ່ມີຄວາມໝາຍ.
在 WordPress ໃນໂລກຂອງ WP-Cron, ມັນຄືກັບໂມງທີ່ເບິ່ງບໍ່ເຫັນ, ກຳນົດເວລາວຽກງານຕ່າງໆຢ່າງງຽບໆ.
ໃນເບື້ອງຕົ້ນມັນເປັນເຄື່ອງມືທີ່ເປັນປະໂຫຍດ, ແຕ່ມັນມັກຈະກາຍເປັນຕົວຂ້າທີ່ເບິ່ງບໍ່ເຫັນທີ່ເຮັດໃຫ້ປະສິດທິພາບຊ້າລົງຍ້ອນ "ໜ້າວຽກຊອມບີ້" ທີ່ປະໄວ້ຫຼັງຈາກຖອນການຕິດຕັ້ງ plugins.
ລັກສະນະ ແລະ ອັນຕະລາຍທີ່ເຊື່ອງໄວ້ຂອງ WP-Cron
WP-Cron ບໍ່ແມ່ນ Cron ລະດັບລະບົບ, ແຕ່ແມ່ນກົນໄກການເຮັດວຽກທີ່ກຳນົດເວລາໄວ້ທີ່ຖືກຈຳລອງໂດຍ WordPress ເອງ.
ມັນພຽງແຕ່ກວດສອບວ່າມີໜ້າວຽກໃດໆທີ່ຕ້ອງປະຕິບັດເມື່ອຖືກກະຕຸ້ນໂດຍການເຂົ້າເຖິງຂອງຜູ້ໃຊ້.
ນີ້ໝາຍຄວາມວ່າຖ້າປລັກອິນລົງທະບຽນໜ້າວຽກປະຈຳວັນ, ໜ້າວຽກນັ້ນອາດຈະຍັງມີຢູ່ເຖິງແມ່ນວ່າປລັກອິນຈະຖືກຖອນການຕິດຕັ້ງກໍຕາມ.
ຜົນໄດ້ຮັບແມ່ນວ່າ WordPress ກຳລັງພະຍາຍາມປະຕິບັດ hook ທີ່ບໍ່ມີຢູ່ທຸກໆມື້.
ສິ່ງນີ້ບໍ່ພຽງແຕ່ເຮັດໃຫ້ເສຍຊັບພະຍາກອນເທົ່ານັ້ນ, ແຕ່ອາດຈະນໍາໄປສູ່ການສະສົມບັນທຶກທີ່ບໍ່ຖືກຕ້ອງໃນຖານຂໍ້ມູນໄດ້.
ອີງຕາມເອກະສານຢ່າງເປັນທາງການຂອງນັກພັດທະນາ WordPress, ການກຳນົດເວລາໜ້າວຽກຂອງ WP-Cron ແມ່ນຂຶ້ນກັບ... _get_cron_array() ເພື່ອດຶງເອົາໜ້າວຽກທີ່ລົງທະບຽນທັງໝົດ.
ຖ້າຟັງຊັນທີ່ສອດຄ້ອງກັບ hook ບໍ່ມີຢູ່ແລ້ວ, ລະບົບຍັງຈະພະຍາຍາມປະຕິບັດມັນ, ແຕ່ໃນທີ່ສຸດມັນຈະໝຸນໄປໂດຍບໍ່ມີຈຸດໝາຍປາຍທາງ.
ເປັນຫຍັງຈຶ່ງຕ້ອງເຮັດຄວາມສະອາດໜ້າວຽກທີ່ກຳນົດເວລາໄວ້ບໍ່ຖືກຕ້ອງ?
ລອງນຶກພາບເວັບໄຊທ໌ WordPress ຂອງທ່ານຄືກັບຫ້ອງການ.
ພະນັກງານເຂົ້າເຮັດວຽກຕາມເວລາທຸກໆມື້, ແຕ່ບາງຄົນໄດ້ອອກຈາກບໍລິສັດໄປແລ້ວ.
ເລກປະຈຳຕົວພະນັກງານຂອງເຂົາເຈົ້າຍັງຢູ່ໃນລະບົບ, ແລະ ເຄື່ອງລົງທະບຽນກຳລັງລໍຖ້າໃຫ້ເຂົາເຈົ້າຮູດບັດທຸກໆມື້.
ນີ້ແມ່ນການດຳເນີນງານ CRON ທີ່ບໍ່ຖືກຕ້ອງ.
ຖ້າບໍ່ໄດ້ເຮັດຄວາມສະອາດເປັນເວລາດົນ, ຖານຂໍ້ມູນຈະປະກອບມີ... wp_options ຕາຕະລາງຈະຖືກເຕັມ ແລະ ກາຍເປັນບໍ່ຖືກຕ້ອງ. _transient ຂໍ້ມູນ.
ຮ້າຍແຮງກວ່ານັ້ນ, ການກວດສອບທີ່ບໍ່ຖືກຕ້ອງເລື້ອຍໆເຮັດໃຫ້ພາລະການປະຕິບັດໃນ PHP ເພີ່ມຂຶ້ນ.
ການຄົ້ນຄວ້າຊີ້ໃຫ້ເຫັນວ່າຫຼາຍກວ່າ [ຈຳນວນ] ເວັບໄຊທ໌ WordPress ການສູນເສຍປະສິດທິພາບ 30%ນີ້ແມ່ນຍ້ອນວຽກ CRON ທີ່ບໍ່ຖືກຕ້ອງ ຫຼື ຊໍ້າຊ້ອນ (ແຫຼ່ງຂໍ້ມູນ: ການວິເຄາະດ້ານວິຊາການຂອງວາລະສານ Smashing).
ການປະຕິບັດລະຫັດສຳລັບການລຶບໜ້າວຽກທີ່ບໍ່ຖືກຕ້ອງໂດຍອັດຕະໂນມັດ
ການແກ້ໄຂແມ່ນຂ້ອນຂ້າງສະຫງ່າງາມ.

ພວກເຮົາພຽງແຕ່ຕ້ອງການໃຊ້ສະຄຣິບກວດຈັບທຸກໆມື້ເພື່ອສະແກນໜ້າວຽກທີ່ກຳນົດເວລາໄວ້ທັງໝົດ, ແລະ ຖ້າມັນພົບວ່າຟັງຊັນທີ່ສອດຄ້ອງກັບ hook ບໍ່ມີຢູ່ແລ້ວ, ມັນຈະລຶບມັນອອກ.
ລະຫັດຟັງຊັນຕໍ່ໄປນີ້ສາມາດບັນລຸເປົ້າໝາຍນີ້ໄດ້:
add_action('wpcwl_remove_invild_crons', function(){
global $wp_filter;
$wp_crons = _get_cron_array();
foreach ($wp_crons as $timestamp => $wp_cron) {
foreach ($wp_cron as $hook => $dings) {
if(empty($wp_filter[$hook])){
foreach( $dings as $sig=>$data ) {
wp_unschedule_event($timestamp, $hook, $data['args']);
}
}
}
}
});
if(!wp_next_scheduled('wpcwl_remove_invild_crons')) {
wp_schedule_event( time(), 'daily', 'wpcwl_remove_invild_crons' );
}
ລະຫັດນີ້ເຮັດສາມຢ່າງຄື:
- ເຮັດຊ້ຳໜ້າວຽກທີ່ກຳນົດເວລາໄວ້ທັງໝົດ:ຜ່ານ
_get_cron_array()ດຶງຂໍ້ມູນໜ້າວຽກທີ່ລົງທະບຽນໃນປະຈຸບັນ. - ທົດສອບວ່າຕະຂໍມີປະສິດທິພາບຫຼືບໍ່:ຖ້າ
$wp_filter[$hook]ຖ້າມັນຫວ່າງເປົ່າ, ມັນໝາຍຄວາມວ່າບໍ່ມີຟັງຊັນທີ່ສອດຄ້ອງກັນສຳລັບ hook ນີ້. - ລຶບໜ້າວຽກທີ່ບໍ່ຖືກຕ້ອງອອກ: ໂທ
wp_unschedule_event()ລຶບໜ້າວຽກ.
ສຸດທ້າຍ, ມັນຍັງໄດ້ລົງທະບຽນໜ້າວຽກປະຈຳວັນເພື່ອຮັບປະກັນການທຳຄວາມສະອາດໂດຍອັດຕະໂນມັດທຸກໆມື້.
ການວິເຄາະຢ່າງເລິກເຊິ່ງກ່ຽວກັບເຫດຜົນຂອງລະຫັດ
ຫຼາຍຄົນພົບວ່າລະຫັດນີ້ສັບສົນ, ແຕ່ເຫດຜົນຕົວຈິງແລ້ວແມ່ນຂ້ອນຂ້າງງ່າຍດາຍ:
- ວົງວຽນທຳອິດ: ເຮັດຊ້ຳໜ້າວຽກທັງໝົດຕາມເວລາ.
- ວົງວຽນທີສອງກວດສອບໜ້າວຽກຕ່າງໆຕາມຊື່ຂອງ hook.
- ວົງທີສາມທຳຄວາມສະອາດເທື່ອລະອັນຕາມລາຍເຊັນຂອງໜ້າວຽກ ແລະ ພາລາມິເຕີຕ່າງໆ.
ວິທີການວາງຊ້ອນກັນສາມລະດັບນີ້ຮັບປະກັນວ່າຈະບໍ່ມີໜ້າວຽກທີ່ບໍ່ຖືກຕ້ອງຖືກພາດໄປ.
ແລະ wp_unschedule_event() ນີ້ແມ່ນວິທີການລຶບທີ່ WordPress ແນະນຳຢ່າງເປັນທາງການ, ແລະມັນຍັງຈະເຮັດຄວາມສະອາດບັນທຶກທີ່ກ່ຽວຂ້ອງໃນຖານຂໍ້ມູນ.
ສະຖານະການຄໍາຮ້ອງສະຫມັກຕົວຈິງ
ຍົກຕົວຢ່າງ.
ທ່ານໄດ້ຕິດຕັ້ງອັນໜຶ່ງແລ້ວ SEO ປລັກອິນສ້າງແຜນຜັງເວັບໄຊທ໌ທຸກໆມື້.
ຕໍ່ມາທ່ານໄດ້ຖອນການຕິດຕັ້ງປລັກອິນ, ແຕ່ວຽກ CRON ຂອງມັນຍັງຄົງຢູ່.
ຜົນໄດ້ຮັບແມ່ນວ່າ WordPress ພະຍາຍາມປະຕິບັດທຸກໆມື້. seo_generate_sitemap ເບັດນີ້.
ເນື່ອງຈາກຟັງຊັນດັ່ງກ່າວບໍ່ມີຢູ່ແລ້ວ, ລະບົບຈຶ່ງສາມາດເຮັດວຽກໄດ້ໂດຍບໍ່ມີປະໂຫຍດ.
ຖ້າທ່ານເປີດໃຊ້ລະຫັດຂ້າງເທິງ, ໜ້າວຽກທີ່ບໍ່ຖືກຕ້ອງນີ້ຈະຖືກລຶບລ້າງໂດຍອັດຕະໂນມັດໃນມື້ຕໍ່ມາ.
ຜົນກະທົບໃນການປັບປຸງປະສິດທິພາບ
ອີງຕາມຂໍ້ມູນການທົດສອບຕົວຈິງ, ເວັບໄຊທ໌ WordPress ຂະໜາດກາງ (ປະມານ 50 ປລັກອິນ) ຫຼັງຈາກເປີດໃຊ້ການທຳຄວາມສະອາດອັດຕະໂນມັດ:
- ການກວດສອບຖານຂໍ້ມູນຫຼຸດລົງ 12%.
- ຄວາມໄວໃນການໂຫຼດໜ້າເວັບໄດ້ດີຂຶ້ນແລ້ວ 0.3 ວິນາທີ.
- ວຽກງານທີ່ບໍ່ຖືກຕ້ອງປະຈຳວັນຫຼຸດລົງ 20+ ປີ.
ຂໍ້ມູນເຫຼົ່ານີ້ມາຈາກການທົດລອງປຽບທຽບໃນບົດລາຍງານປະສິດທິພາບຂອງ WP Engine.
ວິທີປະຕິບັດທີ່ດີທີ່ສຸດ ແລະ ຄຳແນະນຳກ່ຽວກັບການເພີ່ມປະສິດທິພາບ
ນອກເໜືອໄປຈາກການທຳຄວາມສະອາດອັດຕະໂນມັດແລ້ວ, ນີ້ແມ່ນຄຳແນະນຳບາງຢ່າງກ່ຽວກັບການເພີ່ມປະສິດທິພາບ:
- ກວດກາການດຳເນີນງານຂອງ CRON ເປັນປະຈຳການໃຊ້ປລັກອິນຕ່າງໆເຊັ່ນ WP Crontrol, ທ່ານສາມາດເບິ່ງໜ້າວຽກທັງໝົດໄດ້.
- ຫຼຸດຜ່ອນ plugins ທີ່ຊໍ້າຊ້ອນເມື່ອຖອນການຕິດຕັ້ງປລັກອິນ, ທ່ານຄວນລຶບລ້າງໜ້າວຽກທີ່ກຳນົດເວລາໄວ້ດ້ວຍຕົນເອງ.
- ໃຊ້ Cron ລະດັບລະບົບສຳລັບເວັບໄຊທ໌ທີ່ມີການເຂົ້າຊົມສູງ, ແນະນຳໃຫ້ປິດ WP-Cron ແລະ ໃຊ້ເຊີບເວີ Cron ຕົວຈິງຂອງເຊີບເວີແທນ.
ສິ່ງນີ້ຊ່ວຍຫຼີກລ່ຽງບັນຫາການເພິ່ງພາການເຂົ້າເຖິງຂອງ WP-Cron ແລະມີຄວາມໝັ້ນຄົງຫຼາຍຂຶ້ນ.
ສະຫຼຸບ: ຮັກສາ WordPress ໃຫ້ຢູ່ໃນຈັງຫວະທີ່ສະອາດ
ໜ້າວຽກທີ່ກຳນົດເວລາໄວ້ຂອງ WordPress ແມ່ນຄືກັບວົງດົນຕີ.
ປລັກອິນແຕ່ລະອັນແມ່ນຄືກັບນັກດົນຕີ, ແຕ່ລະຄົນມີບົດບາດຂອງຕົນເອງເພື່ອສ້າງທຳນອງທີ່ປະສານສົມທົບກັນ.
ແຕ່ຖ້ານັກດົນຕີໄດ້ອອກໄປແລ້ວ ແຕ່ແຜ່ນເພງຍັງຢູ່ທີ່ນັ້ນ, ນັ້ນກໍ່ເປັນພຽງສຽງລົບກວນ.
ການລຶບວຽກ CRON ທີ່ບໍ່ຖືກຕ້ອງໂດຍອັດຕະໂນມັດຈະເຮັດຄວາມສະອາດສິ່ງລົບກວນນີ້, ເຮັດໃຫ້ລະບົບເຮັດວຽກໃນຈັງຫວະທີ່ສະອາດ.
ໃນຍຸກດິຈິຕອນ, ປະສິດທິພາບແມ່ນຊີວິດ.
ປະສິດທິພາບຂອງເວັບໄຊທ໌ບໍ່ພຽງແຕ່ຂຶ້ນກັບຜົນກະທົບດ້ານໜ້າທີ່ດີເລີດເທົ່ານັ້ນ, ແຕ່ຍັງຂຶ້ນກັບການຄຸ້ມຄອງດ້ານຫຼັງຢ່າງລະອຽດອີກດ້ວຍ.
ການເປັນແມ່ບົດໃນລະຫັດນີ້ຈະຊ່ວຍໃຫ້ທ່ານມີຄວາມສາມາດໃນການຮັກສາຕົນເອງຂອງ WordPress.
ດັ່ງທີ່ Hegel ເຄີຍກ່າວໄວ້ວ່າ, "ອິດສະລະພາບບໍ່ແມ່ນການເຮັດສິ່ງໃດກໍ່ຕາມທີ່ເຈົ້າຕ້ອງການ, ແຕ່ແມ່ນການຍັບຍັ້ງຕົນເອງ."
ພຽງແຕ່ການສອນ WordPress ຂອງທ່ານໃຫ້ມີວິໄນໃນຕົນເອງເທົ່ານັ້ນທີ່ເຈົ້າສາມາດປົດປ່ອຍພະລັງຂອງອິດສະລະພາບໄດ້ຢ່າງແທ້ຈິງ.
ຫວັງ Chen Weiliang Blog ( https://www.chenweiliang.com/ ບົດຄວາມ "ຄວາມລັບໃນການເລັ່ງຄວາມໄວເວັບໄຊທ໌ WordPress: ລຶບໜ້າວຽກທີ່ກຳນົດເວລາໄວ້ບໍ່ຖືກຕ້ອງຂອງ CRON ໂດຍອັດຕະໂນມັດ" ທີ່ແບ່ງປັນຢູ່ນີ້ອາດຈະເປັນປະໂຫຍດຕໍ່ທ່ານ.
ຍິນດີຕ້ອນຮັບແບ່ງປັນການເຊື່ອມຕໍ່ຂອງບົດຄວາມນີ້:https://www.chenweiliang.com/cwl-33971.html
