7 modulis · 7.3
Cron, Action Scheduler ir bandomoji aplinka
7 modulis: Matomumas paieškoje ir talpinimas · Skaitymo laikas: 10 min.
Mokymosi tikslas: Po šios pamokos galėsite paaiškinti, kaip WooCommerce vykdo užduotis fone, patikrinti suplanuotus veiksmus ir, kilus problemoms, juos atkurti, taip pat paruošti bandomąją aplinką (staging) parduotuvei taip, kad nenukentėtų tikri klientai, mokėjimai ar užsakymai.
Pagrindinės sąvokos: WP-Cron, tikras cron, DISABLE_WP_CRON, Action Scheduler, suplanuoti veiksmai, laukiantys, įvykdyti, nepavykę, valymas, bandomoji aplinka parduotuvei, mokėjimų paslaugų teikėjo bandomasis režimas, išjungti laiškai, webhook'ai, integracijos, duomenų bazės neperrašyti ant gamybinės aplinkos
Kas vyksta, kai niekas nežiūri
Parduotuvė atlieka daug darbo, kuris nėra tiesiogiai susijęs su lankytojo paspaudimu:
- atšaukia neapmokėtus užsakymus, kai baigiasi prekių rezervavimo laikas (pamoka 3.4);
- siunčia laiškus pasikeitus užsakymo statusui ir webhook'us integracijoms;
- atnaujina ataskaitas ir statistiką valdymo skydelyje;
- išvalo pasibaigusias sesijas ir laikinus duomenis;
- taiko saugojimo terminus iš Paskyros ir privatumas (pamoka 2.3);
- prenumeratų ar buhalterinės apskaitos integracijų atveju: nurašo mokėjimus ir perduoda duomenis.
Tam WordPress naudoja WP-Cron, o WooCommerce papildomai naudoja Action Scheduler. Jei jie veikia netinkamai, Jūs to iš karto nepastebite. Pastebite tada, kai neapmokėti užsakymai ir toliau laiko rezervuotas prekes, ataskaitos lieka tuščios arba integracija vėluoja keletą dienų.
WP-Cron ir tikras cron
Kaip veikia WP-Cron ir kodėl tikra cron užduotis yra geresnė, aprašyta WordPress kurso pamokoje 6.3: WP-Cron paleidžiamas apsilankymų metu, o ne pagal laikrodį, todėl jis nepatikimas, kai lankytojų mažai, ir apkrauna serverį, kai jų daug. Sprendimas: DISABLE_WP_CRON faile wp-config.php ir cron užduotis Jūsų talpinimo valdymo skydelyje, kuri kas kelias minutes paleidžia wp-cron.php.
Parduotuvei tai ne optimizavimas, o būtinybė:
- Naktį, kai lankytojų mažai, neapmokėti užsakymai vis tiek turi būti atšaukti laiku.
- Per didelę akciją nenorite, kad sunki foninė užduotis būtų vykdoma kartu su kliento, norinčio atsiskaityti, puslapio užklausa.
WebOké tokią užduotį sukuriate DirectAdmin skiltyje Periodinės užduotys (DA 15.1, KB 48), kaip kelią iki PHP nurodydami /usr/local/bin/php; pas kitus talpinimo paslaugų teikėjus tai veikia panašiai jų cron lange. Parduotuvei pasirinkite intervalą nuo vienos iki penkių minučių, geriau nei dešimt. Užduotis, kuri vykdoma kas minutę ir neturi ką veikti, beveik nieko nekainuoja.
Action Scheduler: WooCommerce eilė
Action Scheduler yra foninių užduočių eilė, pateikiama kartu su WooCommerce ir naudojama daugelio kitų įskiepių (prenumeratos, buhalterinės apskaitos integracijos, el. pašto rinkodara). Kiekviena užduotis yra veiksmas su laiku ir statusu. Eilė apdorojama per WP-Cron užduotį (action_scheduler_run_queue), todėl ir čia galioja tas pats: be patikimo cron eilė vėluoja.
Viską matote skiltyje WooCommerce > Statusas > Suplanuoti veiksmai (Scheduled Actions). Yra skirtukai pagal statusą:
| Statusas | Reikšmė | Ką daryti |
|---|---|---|
| Laukia patvirtinimo (Pending) | Dar turi būti įvykdytas | Jei tokių yra šimtai, o jų laikas jau praėjęs, eilė vėluoja: patikrinkite cron |
| Vykdoma (In-progress) | Vykdomas dabar | Jei veiksmas ilgai užstringa, pažiūrėkite į žurnalą šalia |
| Įvykdytas (Complete) | Atlikta | Nieko; jie išvalomi automatiškai |
| Nepavykęs (Failed) | Įvyko klaida | Perskaitykite klaidos pranešimą stulpelyje Žurnalas; dažnai tai įskiepis arba nepasiekiama integracija |
| Atšauktas (Canceled) | Sąmoningai neįvykdytas | Dažniausiai nieko |
Pagal išeitinį kodą Action Scheduler pagal numatytuosius nustatymus įvykdytus ir atšauktus veiksmus išvalo po mėnesio, o nepavykusius po trijų mėnesių. Jei lentelė vis tiek sparčiai auga, greičiausiai vykdoma daug veiksmų, kurie nuolat nepavyksta arba vis kuriami iš naujo; užuot tiesiog išvalę lentelę, išsiaiškinkite, kuris įskiepis juos kuria (padeda stulpelis Grupė ir hook pavadinimas).
Praktinis pavyzdys iš Arbatinės Example, e. parduotuvės Utrechte (Nyderlanduose): pakeitus slaptažodį, integracija su buhalterinės apskaitos programa kiekvieną užsakymą įrašydavo į eilę kaip nepavykusį veiksmą. Po savaitės buvo 400 nepavykusių veiksmų ir trūko 60 sąskaitų faktūrų (pamoka 5.6). Sutvarkęs integraciją, administratorius galėjo veiksmus po vieną paleisti iš naujo su Vykdyti dabar (Run).
Bandomoji aplinka parduotuvei
Kas yra bandomoji aplinka (staging), kaip ją sukurti ir apsaugoti (slaptažodis, noindex), aprašyta WordPress kurso pamokoje 8.3. WebOké tai galima padaryti klonuojant per Installatron (DA 13.7, KB 232) ir slaptažodžiu apsaugotu katalogu (DA 15.9); kiti talpinimo paslaugų teikėjai turi panašių įrankių. Parduotuvei prisideda keli papildomi dalykai, nes parduotuvės kopijoje yra tikrų klientų duomenų ir ji gali atlikti tikrus veiksmus.
Iškart po klonavimo, prieš darydami ką nors kita:
- Mokėjimų paslaugų teikėjas bandomajame režime, su bandomaisiais raktais. Bandomoji aplinka su tikrais (live) raktais gali priimti tikrus mokėjimus arba atlikti grąžinimus.
- Laiškai išjungti arba nukreipti. Antraip kopija siųs patvirtinimus, priminimus ir laiškus apie paliktus krepšelius tikriems klientams. Naudokite įskiepį, kuris sulaiko visus laiškus arba siunčia juos vienu bandomuoju adresu.
- Integracijos ir webhook'ai išjungti. Buhalterinė apskaita, atsargų sinchronizavimas, siuntų etiketės, el. pašto rinkodara: antraip bandomoji aplinka užregistruos sąskaitas faktūras arba išsiųs siuntinius. Patikrinkite ir WooCommerce > Nustatymai > Papildoma > Webhook'ai bei API raktus.
- Peržiūrėkite suplanuotus veiksmus. Eilė nukopijuota kartu. Antraip laukiantys veiksmai (priminimo laiškas, prenumeratos mokėjimas) bandomojoje aplinkoje bus įvykdyti dar kartą.
- Apribokite asmens duomenis. Jei testavimui tikrų klientų duomenų nereikia, bandomojoje aplinkoje juos ištrinkite arba anonimizuokite. Bandomajai aplinkai taip pat taikomas BDAR (GDPR), o ji dažnai būna prasčiau apsaugota (pamoka 5.5).
Ir svarbiausia taisyklė perkeliant atgal: niekada neperrašykite veikiančios parduotuvės bandomosios aplinkos duomenų baze. Nuo klonavimo iki perkėlimo atsirado naujų užsakymų, klientų, atsargų pokyčių ir mokėjimų; juos tada prarastumėte. Pakeitimus atlikite iš naujo gamybinėje aplinkoje (dabar žinote, kad jie veikia) arba sinchronizuokite tik failus. Jei vis dėlto reikia perkelti duomenų bazę, darykite tai tik įjungę parduotuvės priežiūros režimą, iškart po naujos atsarginės kopijos ir su įrankiu, kuris praleidžia užsakymus ir klientus.
Atnaujinimo testavimas bandomojoje aplinkoje
Įprasta eiga didesniam WooCommerce ar mokėjimo įskiepio atnaujinimui:
- Sukurkite naują bandomąją aplinką (gamybinės aplinkos kloną) ir sutvarkykite penkis aukščiau nurodytus punktus.
- Atnaujinkite bandomojoje aplinkoje ir atlikite duomenų bazės atnaujinimą, jei WooCommerce to paprašo.
- Atlikite bandomąjį užsakymą bandomuoju režimu: apmokėjimas, nesėkmingas mokėjimas, grąžinimas (pamoka 4.5).
- Patikrinkite Suplanuoti veiksmai ir klaidų žurnalą, ar neatsirado naujų klaidų.
- Tada atnaujinkite gamybinę aplinką ramiu metu, prieš tai padarę atsarginę kopiją (pamoka 6.2).
Santrauka
- WooCommerce daug darbo atlieka fone; tai vykdoma per WP-Cron ir Action Scheduler.
- Parduotuvei visada naudokite tikrą cron užduotį (kas vieną iki penkių minučių), o ne WP-Cron apsilankymų metu.
- Tikrinkite WooCommerce > Statusas > Suplanuoti veiksmai: daug pavėlavusių laukiančių arba nepavykusių veiksmų rodo, kad neveikia cron arba integracija.
- Bandomojoje aplinkoje: mokėjimų paslaugų teikėjas bandomajame režime, laiškai ir integracijos išjungti, suplanuoti veiksmai peržiūrėti, asmens duomenys apriboti.
- Niekada neperrašykite veikiančios parduotuvės bandomosios aplinkos duomenų baze; pakeitimus atlikite iš naujo gamybinėje aplinkoje.
Testas (quiz)
Užduotis
Užduotis A7.3: Ar Jūsų bandomoji aplinka (staging) apsaugota? Tai tas pats patikrinimas kaip WordPress kurso užduotis A8.3. Pirmiausia Jums reikia savo domeno nuosavybės įrodymo (TXT įrašo _weboke-cursus.<domein> arba failo /.well-known/weboke-cursus-<code>.txt su gautu kodu). Tada įveskite savo parduotuvės adresą ir bandomosios aplinkos adresą (to paties domeno pavaldųjį pavadinimą). Programa be prisijungimo duomenų užklausia bandomosios aplinkos pagrindinio puslapio ir gamybinės aplinkos pagrindinio puslapio. Žalia, jei bandomoji aplinka prašo slaptažodžio (401) arba jei ji turi noindex ir naudoja savo adresą (REST prieiga nurodo į bandomosios aplinkos pavadinimą), o gamybinė aplinka noindex neturi. Oranžinė, jei bandomoji aplinka turi noindex, bet neturi slaptažodžio arba galiojančio sertifikato. Raudona, jei bandomoji aplinka atvira ir indeksuojama, jei ji vis dar nurodo į gamybinės aplinkos adresą arba jei gamybinė aplinka per klaidą turi noindex.
Klausimai sau (netikrinami): ar mokėjimų paslaugų teikėjas Jūsų bandomojoje aplinkoje veikia bandomuoju režimu? Ar laiškai išjungti arba nukreipti? Ar integracijos ir webhook'ai išjungti? Kiek laukiančių ir nepavykusių veiksmų dabar yra skiltyje Suplanuoti veiksmai gamybinėje aplinkoje?
Platesniam skaitymui
Šiuose straipsniuose aprašyti veiksmai WebOké valdymo skydeliuose; kituose skydeliuose jie atliekami panašiai.
- DirectAdmin vadovas 15.1: Periodinės užduotys: automatinis užduočių vykdymas
- Cronjob arba užduoties sukūrimas (ir ką daryti, jei ji nevykdoma)
- Sukurti WordPress bandomąją aplinką
- DirectAdmin vadovas 13.7: Klonavimas ir testavimo aplinkos (staging) kūrimas
- DirectAdmin vadovas 15.9: Slaptažodžiu apsaugotos direktorijos
- Nemokamas WordPress kursas 8.3: Staging: saugus testavimas
- Nemokamas WordPress kursas 6.3: Vaizdai, PHP ir kiti greičio patobulinimai
- Action Scheduler (actionscheduler.org, anglų kalba): https://actionscheduler.org/
- WooCommerce Status ir Suplanuoti veiksmai: problemų diagnostika
- Testinė aplinka (staging) Jūsų internetinei parduotuvei
