WordPress vietnes paātrināšanas noslēpumi: automātiski noņemiet nederīgus CRON ieplānotos uzdevumus

Tīmekļa serverim sliktākais nav dīkstāve, bet gan bezjēdzīgu uzdevumu radīta lejupslīde.

WordPress WP-Cron pasaulē tas ir kā neredzams pulkstenis, kas klusībā plāno dažādus laika ziņā ierobežotus uzdevumus.

Sākotnēji tas bija noderīgs rīks, taču bieži vien tas kļūst par neredzamu slepkavu, kas palēnina veiktspēju "zombiju uzdevumu" dēļ, kas paliek pēc spraudņu atinstalēšanas.

WP-Cron būtība un slēptās briesmas

WP-Cron nav sistēmas līmeņa Cron, bet gan ieplānotu uzdevumu mehānisms, ko simulē pati WordPress.

Tas pārbauda tikai to, vai ir kādi uzdevumi, kas jāizpilda, kad to aktivizē lietotāja piekļuve.

Tas nozīmē, ka, ja spraudnis reģistrē ikdienas uzdevumu, šis uzdevums joprojām var pastāvēt pat tad, ja spraudnis ir atinstalēts.

Rezultātā WordPress mēģina izpildīt āķi, kas katru dienu pat neeksistē.

Tas ne tikai izšķērdē resursus, bet arī var izraisīt nederīgu ierakstu uzkrāšanos datubāzē.

Saskaņā ar oficiālo WordPress izstrādātāja dokumentāciju, WP-Cron uzdevumu plānošana ir atkarīga no... _get_cron_array() Lai izgūtu visus reģistrētos uzdevumus.

Ja āķim atbilstošā funkcija vairs nepastāv, sistēma joprojām mēģinās to izpildīt, bet galu galā tā vienkārši bezmērķīgi griezīsies.

Kāpēc jātīra nederīgi ieplānotie uzdevumi?

Iztēlojieties savu WordPress vietni kā biroju.

Darbinieki katru dienu ierodas laikā, bet daži no viņiem jau ir atstājuši uzņēmumu.

Viņu darbinieku ID numuri joprojām ir sistēmā, un apmeklējumu reģistrācijas mašīna katru dienu gaida, kad viņi nolasīs savas kartes.

Šī ir nederīga CRON darbība.

Ja datubāze ilgstoši netiks tīrīta, tajā būs... wp_options Tabula tiks aizpildīta un kļūs nederīga. _transient dati.

Vēl ļaunāk, biežas nederīgas pārbaudes palielina PHP izpildes slogu.

Pētījumi liecina, ka vairāk nekā [skaits] WordPress vietņu 30% veiktspējas zudumuTas ir saistīts ar nederīgiem vai liekiem CRON uzdevumiem (Avots: Smashing Magazine tehniskā analīze).

Koda ieviešana nederīgu uzdevumu automātiskai noņemšanai

Risinājums patiesībā ir diezgan elegants.

WordPress vietnes paātrināšanas noslēpumi: automātiski noņemiet nederīgus CRON ieplānotos uzdevumus

Mums katru dienu ir jāpalaiž tikai noteikšanas skripts, lai skenētu visus ieplānotos uzdevumus, un, ja tas konstatē, ka āķim atbilstošā funkcija vairs nepastāv, tas to noņems.

To var panākt ar šādu funkciju kodu:

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

Šis kods veic trīs lietas:

  1. Atkārtojiet visus ieplānotos uzdevumus:pass _get_cron_array() Izgūt pašlaik reģistrētos uzdevumus.
  2. Pārbaudiet, vai āķis ir efektīvs:ja $wp_filter[$hook] Ja tas ir tukšs, tas nozīmē, ka šim āķim nav atbilstošas ​​funkcijas.
  3. Noņemt nederīgus uzdevumus: zvanīt wp_unschedule_event() Dzēst uzdevumu.

Visbeidzot, tas arī reģistrēja ikdienas uzdevumu, lai katru dienu nodrošinātu automātisku tīrīšanu.

Padziļināta koda loģikas analīze

Daudzi cilvēki uzskata, ka šis kods ir sarežģīts, taču loģika patiesībā ir diezgan vienkārša:

  • Pirmā cilpaAtkārtoti veikt visus uzdevumus pēc laika zīmoga.
  • Otrā cilpaPārbaudiet uzdevumus pēc āķa nosaukuma.
  • Trešā cilpaNotīriet uzdevumu pēc uzdevuma paraksta un parametriem pa vienam.

Šī trīs līmeņu ligzdošanas metode nodrošina, ka netiek palaists garām neviens nederīgs uzdevums.

un wp_unschedule_event() Šī ir WordPress oficiāli ieteiktā noņemšanas metode, un tā arī iztīrīs saistītos ierakstus datubāzē.

Reālās pasaules lietojumprogrammu scenāriji

Piemēram.

Jūs instalējāt vienu SEO Spraudnis katru dienu ģenerē vietnes karti.

Vēlāk jūs atinstalējāt spraudni, bet tā CRON uzdevums palika.

Rezultātā WordPress mēģina izpildīties katru dienu. seo_generate_sitemap Šis āķis.

Tā kā funkcija vairs nepastāv, sistēma var darboties tikai veltīgi.

Ja iespējosiet iepriekš minēto kodu, šis nederīgais uzdevums tiks automātiski iztīrīts nākamajā dienā.

Veiktspējas uzlabošanas efekts

Balstoties uz faktiskiem testa datiem, vidēja lieluma WordPress vietne (aptuveni 50 spraudņi) pēc automātiskās tīrīšanas iespējošanas:

  • Samazināts datubāzes vaicājumu skaits 12%.
  • Lapas ielādes ātrums ir uzlabojies 0.3 sekunde.
  • Samazināts ikdienas nederīgo uzdevumu skaits 20+.

Šie dati ir iegūti no salīdzinošiem eksperimentiem WP Engine veiktspējas pārskatā.

Labākā prakse un optimizācijas ieteikumi

Papildus automātiskajai tīrīšanai ir sniegti arī daži optimizācijas ieteikumi:

  • Regulāri pārbaudiet CRON darbībuIzmantojot spraudņus, piemēram, WP Crontrol, varat vizuāli apskatīt visus uzdevumus.
  • Samaziniet lieko spraudņu skaituAtinstalējot spraudni, vislabāk ir manuāli notīrīt tā ieplānotos uzdevumus.
  • Izmantojiet sistēmas līmeņa CronVietnēm ar lielu apmeklētāju skaitu ieteicams atspējot WP-Cron un tā vietā izmantot servera faktisko Cron serveri.

Tas novērš WP-Cron piekļuves atkarības problēmas un ir stabilāks.

Secinājums: uzturiet WordPress tīrā ritmā

WordPress ieplānotie uzdevumi ir kā grupa.

Katrs spraudnis ir kā mūziķis, katrs spēlē savu lomu harmoniskas melodijas radīšanā.

Bet, ja mūziķi jau ir aizgājuši, bet nošu lapa joprojām ir tur, tas ir tikai troksnis.

Nederīgu CRON uzdevumu automātiska noņemšana novērš šo troksni, nodrošinot sistēmas darbību tīrā tempā.

Digitālajā laikmetā efektivitāte ir dzīve.

Tīmekļa vietnes veiktspēja ir atkarīga ne tikai no tās stilīgajiem priekšējās daļas efektiem, bet arī no rūpīgās aizmugures daļas pārvaldības.

Šī koda apgūšana dos jums iespēju WordPress pašdziedināties.

Kā reiz teica Hēgelis: "Brīvība nav darīt visu, ko vēlies, bet gan sevis ierobežošana."

Tikai iemācot savam WordPress pašdisciplīnai, jūs varat patiesi atbrīvot brīvības spēku.

发表 评论

Jūsu e-pasta adrese netiks publicēta. 必填 项 已 用 * Etiķete

Rakstu katalogs
Ritiniet uz augšu