Skip to content

Kõik WordPressist, veebiarendusest — ja mitte ainult

🔧 Kuidas parandada WordPressi ajastamata jätmise viga: 3 toimivat meetodit

🔧 Kuidas parandada WordPressi ajastamata jätmise viga: 3 toimivat meetodit

Seadsite äratuskella hommikul kella kaheksaks, sest esmaspäeval läheb üles oluline postitus. Valmistasite selle nädalavahetusel ette, ajastasite WordPressi administraatoripaneelis ja läksite muretu südamega magama. Saabub teisipäev, avate saidi ja ei midagi. Administraatoripaneelis näete pealkirja kõrval teadet: „Missed schedule."

Tuttav olukord? Ainuüksi viimase aasta jooksul arutati venekeelsetes WordPressi tugifoorumites seda probleemi üle kolmesaja korra. Viga ei ole teie administraatoripaneelis, majutusteenuses ega pluginates. See on WordPressi enda arhitektuuriline iseärasus.

Allpool on kolm viisi selle lõplikult lahendamiseks, alates kiireimast kuni kõige usaldusväärsemani. Ei mingeid cron-loitse, pimesi wp-config.php muutmist ega „avaldan lihtsalt käsitsi" plaastrit.

💡 Kiirülevaade:

  • Paigaldage Missed Schedule Post Publisher, et tegemata postitused avaldataks automaatselt (seadistamine võtab kaks minutit)
  • Asendage WP-Cron serveri croniga, et saada liiklusest sõltumatu radikaalne lahendus
  • Paigaldage WP Crontrol käsitsi järelevalveks (kuvab kõik cron-sündmused ja võimaldab neid käsitsi käivitada)

Miks WordPress ajastatud postitusi vahele jätab

WordPress ei kasuta tõelist süsteemset croni. Selle asemel tugineb see mehhanismile nimega WP-Cron, pseudocronile, mis ei käivitu mitte serveri taimeri, vaid saidi külastaja saabumise peale.

Toimimispõhimõte on järgmine. Kui ajastate postituse kell 09:00, kirjutab WordPress ülesande andmebaasi. Kuid see saab ülesande täita ainult siis, kui keegi külastab saiti umbes kell 09:00. Külastaja saabub, WordPress kontrollib ülesannete nimekirja ja avaldab postituse. Kui külastajat pole, jääb ülesanne rippuma ja te näete teadet „Missed schedule."

Saitide puhul, millel on 500 kuni 1000 igapäevast külastajat, töötab WP-Cron vastuvõetavalt: peaaegu kindlasti klõpsab keegi õigel hetkel. Kuid kui teil on noor blogi, nišiprojekt või avaldate postitusi öösel (oma ajavööndis), siis WP-Cron ebaõnnestub regulaarselt. Lisage veel vahemällu salvestamise pluginad: WP Rocket, W3 Total Cache või Cloudflare võivad serveerida vahemällu salvestatud lehti ilma WordPressi üldse käivitamata, mistõttu cron-ülesanded ei pruugi tunde käivituda.

Seetõttu ongi „Missed schedule" viga süsteemne, mitte juhuslik. Lahendus ei ole postituse käsitsi ümber ajastamine, vaid üks kolmest allpool kirjeldatud lähenemisest.

Kolm meetodit käsitlevad erinevaid stsenaariume. Esimene, kergekaalulise automaatse avaldamise plugina paigaldamine, lahendab probleemi valdava enamuse kasutajate jaoks kahe minutiga. Teine, serveri cronile üleminek, pakub infrastruktuuri tasemel töökindlust sõltumata liiklusest. Kolmas, käsitsi juhtpaneel, on kasulik neile, kes soovivad näha iga cron-ülesannet nimepidi ja seda käsitsi käivitada. Võite alustada esimesest ja lisada hiljem kolmanda täieliku meelerahu saavutamiseks.

Veebisaidi sisu kallal sülearvutiga töötamine

1. Meetod: Missed Schedule Post Publisher plugin, lihtne ja usaldusväärne

Kiireim viis selle probleemi lahendamiseks on spetsiaalse plugina paigaldamine. Ajalooliselt kasutati WP Missed Schedule'i, kuid see eemaldati WordPress.org kataloogist juba 2017. aastal ja GitHubi versioon sisaldas tagauksi. Ärge seda mingil juhul paigaldage.

Praegune asendus on Missed Schedule Post Publisher. Sellel pluginil on üks eesmärk: kontrollida, kas ajastatud postitus on takerdunud, ja avaldada see kohe, kui see tuvastatakse.

Kuidas see erineb oma kadunud eelkäijast:

  • Töötab WP-Croni kaudu ja samaaegselt külastajate pöördumiste kaudu; kui majutusteenus keelab WP-Croni, lülitub plugin automaatselt ümber

  • Seadistatav kontrollintervall: 5, 10, 15, 20, 30 või 60 minutit

  • Null mõju jõudlusele (üks kerge andmebaasipäring)

  • Ühildub WP Rocketi, W3 Total Cache ja Cloudflare'iga

  • Ei tekita uputust lisa-cron-sündmustest; kontrollib ainult tegemata avaldamisi

Paigaldamine on standardne: Pluginad → Lisa uus → otsi „Missed Schedule Post Publisher" → Paigalda → Aktiveeri. Pärast aktiveerimist minge Seaded → Missed Schedule Post Publisher ja valige kontrollintervall. Enamiku saitide jaoks on optimaalne 10 kuni 15 minutit.

Plugin ei vaja käsitsi järelevalvet. Paigaldage see, määrake intervall ja kontrollige tulemust päeva pärast: minge Postitused → Kõik postitused ja veenduge, et silt „Missed schedule" on kadunud. Edaspidi töötab see vaikselt ja usaldusväärselt.

Võrdluseks, vana WP Missed Schedule (eemaldati WordPress.org kataloogist 2017. aastal ja GitHubi versioon sisaldas tagauksi) nägi administraatoripaneelis välja selline. Kui juhtute seda pluginat oma paigaldatud nimekirjas nägema, kustutage see kohe ja asendage Missed Schedule Post Publisheriga.

Aegunud WP Missed Schedule plugin WordPressi paigaldatud pluginate nimekirjas

2. Meetod: serveri cron WP-Croni asemel, radikaalne lahendus

See meetod on tehnilisem, kuid pakub 100% töökindlust: keelate WP-Croni ja seote wp-cron.php väljakutse serveri süsteemse croniga.

Süsteemne cron töötab operatsioonisüsteemi ajakava alusel, sõltumata saidi liiklusest. Kui määrate 5-minutilise intervalli, käivitub ülesanne täpselt 5 minuti pärast, isegi kui saidil pole ühtegi külastajat.

Mida peate tegema:

  • Avage wp-config.php ja lisage järgmine rida enne /* That's all, stop editing! */:
1define('DISABLE_WP_CRON', true);

See takistab WordPressil cron-ülesannete käivitamist külastajate pöördumiste peale. Ülesanded ise ei kao; need jäävad andmebaasi ja ootavad välist väljakutset.

  • Otsige oma majutusteenuse paneelist üles jaotis „Cron Jobs" (cPanel → Cron Jobs, ISPmanager → Scheduler või samaväärne). Looge ülesanne 5- kuni 10-minutilise intervalliga ja selle käsuga:
1wget -q -O - https://your-site.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1

Kui server toetab PHP CLI-d, siis siin on alternatiiv, mis on kiirem ega koorma veebiserverit:

1php /home/username/public_html/wp-cron.php
  • Salvestage ülesanne. 10 minuti pärast kontrollige croni logisid; kui vigu pole, siis süsteem töötab.

Boonus: WP-Croni keelamine DISABLE_WP_CRON kaudu eemaldab külastajate jaoks lehe laadimisel parasiitse viivituse. WordPress ei käivita tavalise sirvimise ajal enam cron-ülesandeid, seega avanevad lehed veidi kiiremini.

Sellel meetodil on üks puudus: juurdepääs croni seadetele pole kõigil majutusteenustel saadaval. Odav jagatud majutus blokeerib mõnikord cron-ülesannete loomise. Sel juhul pöörduge tagasi 1. meetodi juurde; Missed Schedule Post Publisher loodi just selliste piirangute jaoks ja töötab ilma süsteemse cronita.

3. Meetod: käsitsi kontroll WP Crontroliga, täielik kontroll

Kolmas meetod on neile, kes soovivad näha kõike, mis kapoti all toimub. WP Crontrol on cron-sündmuste haldur otse administraatoripaneelis. See ei avalda postitusi ise, kuid näitab, millised ülesanded on ajastatud, millal need pidid käivituma ja mis valesti läks.

Mida WP Crontrol pakub:

  • Täielik nimekiri kõigist cron-sündmustest koos konksu, argumentide ja järgmise käivitamisajaga

  • Võimalus käivitada mis tahes sündmus kohe ühe klõpsuga

  • Cron-sündmuste muutmine ja kustutamine

  • Uute sündmuste ja kohandatud ajakavade lisamine

  • Hoiatus, kui cron-süsteem ei tööta (server ei saa iseendaga ühendust)

Pärast paigaldamist minge Tööriistad → Cron Events. Näete kõigi ülesannete tabelit. Kui postitus on „takerdunud", leidke sündmus konksuga publish_future_post, klõpsake „Run Now" ja postitus ilmub sekundi jooksul voogu.

WP Crontrol on eriti kasulik silumiseks: näete, kas mõni plugin on loonud sadu lisa-cron-sündmusi (seda juhtub), kas ülesannete järjekord on ummistunud või kas pluginatel on konflikt. Veerg „Next Run" näitab, millal sündmus peaks järgmisena käivituma; kui kuupäev on minevikus, on ülesanne takerdunud. Veerg „Recurrence" näitab, kui sageli sündmus kordub; ebatavaliselt sagedased kordused (iga minut) viitavad peaaegu alati probleemsele pluginile.

Kuid iseenesest ei takista WP Crontrol viga „Missed schedule"; see aitab ainult diagnoosida ja tagajärgi käsitsi likvideerida. Kui olete takerdunud avaldamise käsitsi käivitanud, läheb postitus kohe üles, kuid olukord kordub järgmisel korral, kui te ei kõrvalda põhjust 1. või 2. meetodi tasemel.

WordPressi cron-sündmuste halduspaneel WP Crontroli pluginaga

Parim kombinatsioon: 1. meetod (automaatse avaldamise plugin) + 3. meetod (WP Crontrol järelevalveks). Automaatne avaldaja tegeleb tegemata postitustega ja WP Crontrol võimaldab teil ühe pilguga veenduda, et croni järjekord on puhas ja kõik töötab normaalselt.

⁉️🤔 Korduma kippuvad küsimused

Miks WordPress ei kasuta tavalist croni nagu iga teine normaalne süsteem?

WordPressi arendajad valisid teadlikult pseudocroni mudeli, sest see ei vaja serveripoolset seadistamist. Kasutaja paigaldab WordPressi mis tahes majutusteenusele ja ajastatud avaldamine töötab kohe, ilma SSH või konfiguratsioonifailide muutmiseta. Selle mugavuse hind on ebausaldusväärsus vähese liiklusega saitidel. WP-Cron käivitub igal saidi päringul ja kui õigel hetkel päringuid pole, siis ülesannet ei täideta. See on arhitektuuriline kompromiss ja ajakriitiliste postituste jaoks sellest ei piisa.

Millise meetodi peaksin valima, kui ma serveritest aru ei saa?

Missed Schedule Post Publisher (1. meetod). Paigaldamine võtab administraatoripaneeli kaudu kaks minutit; seadistamine tähendab rippmenüüst intervalli valimist. Pole koodi, SSH-d ega wp-config.php muutmist. Plugin tuvastab ise, kas WP-Cron on serveris lubatud, ja kohandub.

Kas viga võib olla seotud WordPressi ajavööndiga?

Jah, ja kontrollige seda esimesena. Minge Seaded → Üldine → Ajavöönd ja veenduge, et olete valinud õige linna ajavööndi, mitte käsitsi UTC nihke. UTC+X nihe ei arvesta suveajaga; kaks korda aastas „triivib" ajakava tunni võrra ja postitused avaldatakse ootamatutel aegadel.

Kas vahemällu salvestamine mõjutab tegemata postitusi?

Otseselt, jah. Vahemällu salvestamise pluginad (WP Rocket, W3 Total Cache, WP Super Cache) ja CDN-id (Cloudflare) võivad külastajatele serveerida valmis HTML-lehe ilma WordPressi PHP tuuma üldse käivitamata. Kui WP-Croni välja ei kutsuta, siis ülesandeid ei täideta. Missed Schedule Post Publisher (1. meetod) väldib seda probleemi, töötades nii croni kui ka vahemällu mittepuutuvate külastajate pöördumiste kaudu. Serveri croni (2. meetod) ei mõjuta vahemällu salvestamine üldse.

Mida teha, kui minu majutusteenus blokeerib cron-ülesannete loomise võimaluse?

Kasutage 1. meetodit: Missed Schedule Post Publisher. See loodi just selliseks olukorraks; see töötab sisseehitatud WP-Croni kaudu ja kui see on keelatud, lülitub automaatselt külastajate pöördumiste kontrollimisele. Te ei kaota funktsionaalsust; kontroll toimub lihtsalt veidi harvemini (külastuste, mitte range taimeri alusel).

Mida täna paigaldada

„Missed schedule" probleemi ei lahenda käsitsi ümber ajastamine; see on nagu toru prao ülevärvimine. Teil on vaja kas automaatse avaldamise pluginat (kaks minutit ja siis unustage) või serveri croni (veidi kauem ja siis unustage igaveseks).

Kui teil on tavaline blogi või ettevõtte sait keskmisel majutusteenusel, alustage Missed Schedule Post Publisheriga. Määrake 10-minutiline intervall, viis klõpsu administraatoripaneelis ja probleem on lahendatud. Kui soovite infrastruktuuri tasemel garantiisid, seadistage süsteemne cron. Lisage WP Crontrol järelevalveks ja te mäletate tegemata postitusi ainult vestlustes teemal „kuidas vanasti oli".

Päev pärast paigaldamist minge administraatoripaneeli ja kontrollige lähimat ajastatud postitust. Kui see läks õigel ajal üles, siis süsteem töötab. Kui mitte, avage WP Crontrol ja vaadake, kas ülesanne publish_future_post ripub täitmata; see viitab sügavamale croni probleemile serveris, mille 2. meetod lahendab.