Artikola Adresaro
- 1 La naturo kaj kaŝitaj danĝeroj de WP-Cron
- 2 Kial purigi malvalidajn planitajn taskojn?
- 3 Koda efektivigo por aŭtomate forigi malvalidajn taskojn
- 4 Profunda analizo de kodlogiko
- 5 Praktikaj aplikaj scenaroj
- 6 Efiko pri plibonigo de rendimento
- 7 Plej bonaj praktikoj kaj optimumigaj sugestoj
- 8 Konkludo: Tenu WordPress en pura ritmo
La plej malbona afero por retservilo ne estas malfunkciado, sed esti trenata malsupren de sensignifaj taskoj.
En WordPress En la mondo de WP-Cron, ĝi estas kiel nevidebla horloĝo, silente planante diversajn tempigitajn taskojn.
Ĝi origine estis helpema ilo, sed ĝi ofte fariĝas nevidebla mortigilo kiu malrapidigas la rendimenton pro la "zombiaj taskoj" restantaj post malinstalado de kromprogramoj.
La naturo kaj kaŝitaj danĝeroj de WP-Cron
WP-Cron ne estas sistemnivela Cron, sed prefere planita taskomekanismo simulita de WordPress mem.
Ĝi nur kontrolas ĉu estas iuj taskoj plenumotaj kiam ekigita de uzantaliro.
Tio signifas, ke se kromprogramo registras ĉiutagan taskon, tiu tasko povas ankoraŭ ekzisti eĉ se la kromprogramo estas malinstalita.
La rezulto estas, ke WordPress provas efektivigi hokon, kiu eĉ ne ekzistas ĉiutage.
Tio ne nur malŝparas rimedojn, sed ankaŭ povas konduki al amasiĝo de malvalidaj rikordoj en la datumbazo.
Laŭ la oficiala dokumentaro por programistoj de WordPress, la taskoplanado de WP-Cron dependas de... _get_cron_array() Por preni ĉiujn registritajn taskojn.
Se la funkcio respondanta al la hoko jam ne ekzistas, la sistemo ankoraŭ provos plenumi ĝin, sed fine ĝi nur turniĝos sencele.
Kial purigi malvalidajn planitajn taskojn?
Imagu vian WordPress-retejon kiel oficejon.
Dungitoj alvenas ĝustatempe ĉiutage, sed kelkaj el ili jam forlasis la firmaon.
Iliaj dungitaj identignumeroj ankoraŭ estas en la sistemo, kaj la ĉeestmaŝino atendas, ke ili ŝovu siajn kartojn ĉiutage.
Ĉi tio estas malvalida CRON-operacio.
Se ne purigita dum longa tempo, la datumbazo enhavos... wp_options La tabelo pleniĝos kaj fariĝos malvalida. _transient datumoj.
Pli malbone, oftaj malvalidaj kontroloj pliigas la plenumŝarĝon de PHP.
Esploro indikas, ke pli ol [nombro] WordPress-retejoj 30% rendimenta malŝparoTio ŝuldiĝas al malvalidaj aŭ redundaj CRON-taskoj (Fonto: Smashing Magazine Technical Analysis).
Koda efektivigo por aŭtomate forigi malvalidajn taskojn
La solvo estas fakte sufiĉe eleganta.

Ni nur bezonas ĉiutage ruli detektan skripton por skani ĉiujn planitajn taskojn, kaj se ĝi trovas, ke la funkcio respondanta al la hoko jam ne ekzistas, ĝi forigos ĝin.
La jena funkcia kodo povas atingi tion:
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' );
}
Ĉi tiu kodo faras tri aferojn:
- Ripeti tra ĉiuj planitaj taskoj:pasi
_get_cron_array()Prenu nuntempe registritajn taskojn. - Testu ĉu la hoko estas efika:se
$wp_filter[$hook]Se ĝi estas malplena, tio signifas, ke ne ekzistas koresponda funkcio por ĉi tiu hoko. - Forigi malvalidajn taskojn: voko
wp_unschedule_event()Forigu la taskon.
Fine, ĝi ankaŭ registris ĉiutagan taskon por certigi aŭtomatan purigadon ĉiutage.
Profunda analizo de kodlogiko
Multaj homoj trovas ĉi tiun kodon komplika, sed la logiko estas fakte sufiĉe simpla:
- Unua buklo: Iteraciu tra ĉiuj taskoj laŭ tempstampo.
- Dua bukloKontrolu taskojn laŭ hoknomo.
- Tria bukloPurigu taskon laŭ tasko-subskribo kaj parametroj unu post la alia.
Ĉi tiu tri-nivela nestiga metodo certigas, ke neniu malvalida tasko estas maltrafita.
kaj wp_unschedule_event() Ĉi tiu estas la forigmetodo oficiale rekomendita de WordPress, kaj ĝi ankaŭ purigos la rilatajn rikordojn en la datumbazo.
Praktikaj aplikaj scenaroj
Ekzemple.
Vi instalis unu SEO La kromprogramo generas retejmapon ĉiutage.
Vi poste malinstalis la kromprogramon, sed ĝia CRON-tasko restis.
La rezulto estas, ke WordPress provas funkcii ĉiutage. seo_generate_sitemap Ĉi tiu hoko.
Ĉar la funkcio jam ne ekzistas, la sistemo povas nur vane funkcii.
Se vi ebligas la supran kodon, ĉi tiu malvalida tasko estos aŭtomate forigita la sekvan tagon.
Efiko pri plibonigo de rendimento
Surbaze de faktaj testaj datumoj, mezgranda WordPress-retejo (ĉirkaŭ 50 kromaĵoj) post ebligado de aŭtomata purigado:
- Datumbazaj demandoj reduktitaj 12%.
- La paĝŝarĝrapideco pliboniĝis 0.3 sekundoj.
- Ĉiutagaj malvalidaj taskoj reduktitaj 20+.
Ĉi tiuj datumoj devenas de komparaj eksperimentoj en la raporto pri la rendimento de WP Engine.
Plej bonaj praktikoj kaj optimumigaj sugestoj
Aldone al aŭtomata purigado, jen kelkaj sugestoj pri optimumigo:
- Regule inspektu CRON-operaciojnUzante kromaĵojn kiel WP Crontrol, vi povas vide vidi ĉiujn taskojn.
- Reduktu redundajn kromaĵojnKiam oni malinstalas kromprogramon, estas plej bone permane forigi ĝiajn planitajn taskojn.
- Uzu sistemnivelan CronPor retejoj kun alta trafiko, oni rekomendas malŝalti WP-Cron kaj uzi la veran Cron-servilon de la servilo anstataŭe.
Tio evitas la problemojn pri alira dependeco de WP-Cron kaj estas pli stabila.
Konkludo: Tenu WordPress en pura ritmo
Planitaj taskoj de WordPress estas kiel bando.
Ĉiu kromaĵo estas kiel muzikisto, ĉiu ludante sian propran rolon por krei harmonian melodion.
Sed se la muzikistoj jam foriris sed la partituro ankoraŭ estas tie, tio estas nur bruo.
Aŭtomate forigi malvalidajn CRON-taskojn forigas ĉi tiun bruon, tenante la sistemon funkcianta je pura rapideco.
En la cifereca epoko, efikeco estas vivo.
La efikeco de retejo dependas ne nur de ĝiaj malvarmetaj front-end-efektoj, sed ankaŭ de ĝia zorgema administrado de la malantaŭ-end-efekto.
Majstri ĉi tiun kodon donos al vi la kapablon por WordPress mem-resaniĝi.
Kiel Hegel iam diris, "Libereco ne estas fari kion ajn vi volas, sed memregado."
Nur instruante vian WordPress-on al memdisciplino, vi vere povas liberigi la potencon de libereco.
Hope Chen Weiliang Blogo ( https://www.chenweiliang.com/ La artikolo "Sekretoj por Akceli WordPress-Retejon: Aŭtomate Forigi Malvalidajn Planitajn CRON-Taskojn" dividita ĉi tie eble helpos vin.
Bonvenon dividi la ligon de ĉi tiu artikolo:https://www.chenweiliang.com/cwl-33971.html
