Artikulu direktorioa
- 1 WP-Cron-en izaera eta ezkutuko arriskuak
- 2 Zergatik garbitu programatutako zeregin baliogabeak?
- 3 Baliogabeko zereginak automatikoki kentzeko kodearen inplementazioa
- 4 Kode logikaren analisi sakona
- 5 Aplikazio praktikoak
- 6 Errendimenduaren hobekuntza efektua
- 7 Praktika onenak eta optimizazio iradokizunak
- 8 Ondorioa: Mantendu WordPress erritmo garbi batean
Web zerbitzari batentzat gauzarik txarrena ez da geldialdia, baizik eta zeregin hutsalek erortzea.
在 WordPress WP-Cronen munduan, erloju ikusezin bat bezalakoa da, hainbat denbora-zeregin isilean programatzen dituena.
Hasieran tresna lagungarria zen, baina askotan hiltzaile ikusezin bihurtzen da, pluginak desinstalatu ondoren geratzen diren "zonbi zereginen" ondorioz errendimendua moteltzen duena.
WP-Cron-en izaera eta ezkutuko arriskuak
WP-Cron ez da sistema mailako Cron bat, WordPressek berak simulatutako programatutako zereginen mekanismo bat baizik.
Erabiltzailearen sarbideak abiarazten duenean exekutatu beharreko zereginik dagoen egiaztatzen du soilik.
Horrek esan nahi du plugin batek eguneroko zeregin bat erregistratzen badu, zeregin hori existitu daitekeela plugina desinstalatu arren.
Emaitza da WordPress egunero existitzen ez den hook bat exekutatzen saiatzen ari dela.
Horrek ez ditu baliabideak xahutzen bakarrik, baizik eta datu-basean erregistro baliogabeak pilatzea ere ekar dezake.
WordPress garatzaileentzako dokumentazio ofizialaren arabera, WP-Cronen zereginen programazioa honen araberakoa da... _get_cron_array() Erregistratutako zeregin guztiak berreskuratzeko.
Hook-ari dagokion funtzioa existitzen ez bada, sistemak exekutatzen saiatuko da oraindik, baina azkenean helbururik gabe biratzen ariko da.
Zergatik garbitu programatutako zeregin baliogabeak?
Imajinatu zure WordPress gunea bulego bat bezala.
Langileek egunero garaiz sartzen dira, baina batzuk dagoeneko utzi dute enpresa.
Haien langileen identifikazio zenbakiak oraindik sisteman daude, eta asistentzia-makina egunero zain dago txartelak pasatzeko.
CRON eragiketa baliogabea da hau.
Denbora luzez garbitzen ez bada, datu-baseak edukiko ditu... wp_options Taula beteko da eta baliogabetuko da. _transient datuak.
Are okerrago, baliogabeko egiaztapen maizek PHPren exekuzio-zama handitzen dute.
Ikerketek adierazten dute [kopuru] WordPress webgune baino gehiago direla % 30eko errendimendu-hondakinakHau CRON lan baliogabe edo erredundanteengatik da (Iturria: Smashing Magazine Technical Analysis).
Baliogabeko zereginak automatikoki kentzeko kodearen inplementazioa
Irtenbidea, egia esan, nahiko dotorea da.

Egunero detekzio-script bat exekutatu besterik ez dugu behar programatutako zeregin guztiak eskaneatzeko, eta kakoari dagokion funtzioa jada ez dagoela ikusten badu, kendu egingo du.
Funtzio-kode hauek lor dezakete hau:
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' );
}
Kode honek hiru gauza egiten ditu:
- Programatutako zeregin guztiak errepikatu:pasatu
_get_cron_array()Berreskuratu une honetan erregistratutako zereginak. - Probatu kakoa eraginkorra den ala ezbaldin eta
$wp_filter[$hook]Hutsik badago, amu honetarako dagokion funtziorik ez dagoela esan nahi du. - Kendu baliogabeko zereginak: deitu
wp_unschedule_event()Ezabatu zeregina.
Azkenik, eguneroko zeregin bat ere erregistratu zuen egunero garbiketa automatikoa bermatzeko.
Kode logikaren analisi sakona
Jende askok kode hau korapilatsua iruditzen zaio, baina logika nahiko sinplea da:
- Lehenengo begizta: Zeregin guztiak denbora-zigiluaren arabera iteratatu.
- Bigarren begiztaEgiaztatu zereginak kako-izenaren arabera.
- Hirugarren begiztaGarbitu zeregina banan-banan, zereginaren sinadura eta parametroak.
Hiru mailako habiaratze-metodo honek ziurtatzen du baliogabeko zereginik ez dela galtzen.
eta wp_unschedule_event() Hau da WordPress-ek ofizialki gomendatutako kentzeko metodoa, eta datu-baseko erregistro erlazionatuak ere garbituko ditu.
Aplikazio praktikoak
Adibidez.
Bat instalatu duzu. SEO Pluginak gunearen mapa sortzen du egunero.
Geroago plugina desinstalatu duzu, baina bere CRON lana mantendu da.
Emaitza da WordPress egunero exekutatzen saiatzen dela. seo_generate_sitemap Amu hau.
Funtzioa jada existitzen ez denez, sistema alferrik baino ezin da exekutatu.
Goiko kodea gaitzen baduzu, baliogabeko zeregin hau automatikoki garbituko da hurrengo egunean.
Errendimenduaren hobekuntza efektua
Benetako proba-datuetan oinarrituta, tamaina ertaineko WordPress webgune bat (gutxi gorabehera 50 plugin) garbiketa automatikoa gaitu ondoren:
- Datu-baseko kontsultak murriztu dira 12%.
- Orriaren kargatzeko abiadura hobetu da 0.3 segundo.
- Eguneroko zeregin baliogabeak murriztu dira 20+.
Datu hauek WP Engine errendimendu txosteneko esperimentu konparatiboetatik datoz.
Praktika onenak eta optimizazio iradokizunak
Garbiketa automatikoaz gain, hona hemen optimizazio iradokizun batzuk:
- Aldian-aldian ikuskatu CRON eragiketakWP Crontrol bezalako pluginak erabiliz, zeregin guztiak bisualki ikus ditzakezu.
- Murriztu plugin erredundanteakPlugin bat desinstalatzerakoan, hobe da programatutako zereginak eskuz garbitzea.
- Erabili sistema-mailako CronTrafiko handiko webguneetarako, WP-Cron desgaitzea eta zerbitzariaren benetako Cron zerbitzaria erabiltzea gomendatzen da.
Honek WP-Cron-en sarbide-mendekotasun arazoak saihesten ditu eta egonkorragoa da.
Ondorioa: Mantendu WordPress erritmo garbi batean
WordPress-eko programatutako zereginak banda baten antzekoak dira.
Plugin bakoitza musikari bat bezalakoa da, bakoitzak bere rola betetzen du melodia harmoniatsu bat sortzeko.
Baina musikariak joan badira baina partitura oraindik hor badago, zarata besterik ez da.
CRON lan baliogabeak automatikoki kentzeak zarata hori garbitzen du, sistema erritmo garbian martxan mantenduz.
Aro digitalean, eraginkortasuna bizitza da.
Webgune baten errendimendua ez da soilik bere frontend efektu politak kontuan hartzen, baita bere atzeko aldeko kudeaketa zorrotza ere.
Kode hau menperatzeak WordPress-ek bere burua sendatzeko gaitasuna emango dizu.
Hegelek behin esan zuen bezala, "Askatasuna ez da nahi duzuna egitea, autokontrola baizik".
Zure WordPress-i autodiziplina irakatsiz bakarrik askatu ahal izango duzu askatasunaren indarra benetan.
Hope Chen Weiliang bloga ( https://www.chenweiliang.com/ Hemen partekatutako "WordPress webgunea bizkortzeko sekretuak: automatikoki kendu baliogabeko CRON programatutako zereginak" artikulua lagungarria izan daiteke zuretzat.
Ongi etorri artikulu honen esteka partekatzera:https://www.chenweiliang.com/cwl-33971.html
