Modul 7 · 7.3
Cron, Action Scheduler in testno okolje (staging)
Modul 7: Vidnost in gostovanje · Čas branja: 10 minut
Učni cilj: Po tej lekciji boste znali razložiti, kako WooCommerce izvaja opravila v ozadju, preveriti načrtovana dejanja in jih ob težavah popraviti ter testno okolje (staging) za spletno trgovino nastaviti tako, da pravi kupci, plačila ali naročila niso ogroženi.
Ključni pojmi: WP-Cron, pravi cron, DISABLE_WP_CRON, Action Scheduler, načrtovana dejanja, čakanje, dokončano, spodletelo, čiščenje, testno okolje za spletno trgovino, testni način ponudnika plačil, izklopljena e-pošta, webhooki, povezave, baze podatkov ne prepišete čez produkcijo
Kaj se dogaja, ko nihče ne gleda
Spletna trgovina opravi veliko dela, ki ni neposredno povezano s klikom obiskovalca:
- preklic neplačanih naročil, ko poteče čas za zadržanje zaloge (lekcija 3.4);
- pošiljanje e-sporočil po spremembi stanja in webhookov povezavam;
- posodabljanje poročil in statistike v skrbništvu;
- čiščenje poteklih sej in začasnih podatkov;
- izvajanje rokov hrambe iz Računi in zasebnost (lekcija 2.3);
- pri naročninah ali povezavah z računovodstvom: obračunavanje plačil in posredovanje podatkov.
Za to WordPress uporablja WP-Cron, WooCommerce pa poleg tega še Action Scheduler. Če ta ne delujeta pravilno, tega ne opazite takoj. Opazite šele, ko neplačana naročila še naprej zadržujejo zalogo, poročila ostanejo prazna ali povezava zaostaja več dni.
WP-Cron in pravi cron
Kako deluje WP-Cron in zakaj je pravi cronjob boljši, je opisano v tečaju o WordPressu, lekcija 6.3: WP-Cron se izvaja ob obiskih, ne po uri, kar je pri malo obiskovalcih nezanesljivo, pri veliko obiskovalcih pa obremenjujoče. Rešitev: DISABLE_WP_CRON v wp-config.php in cronjob v Vaši nadzorni plošči gostovanja, ki wp-cron.php zažene vsakih nekaj minut.
Za spletno trgovino to ni optimizacija, temveč nujnost:
- Ponoči, ko je obiskov malo, morajo biti neplačana naročila vseeno pravočasno preklicana.
- Med obsežno akcijo pa nočete, da bi se zahtevno opravilo v ozadju izvajalo na račun zahteve kupca, ki želi zaključiti nakup.
Pri WebOké tako opravilo ustvarite v DirectAdminu pod Cronjob opravila (DA 15.1, KB 48), s potjo do PHP /usr/local/bin/php; pri drugih ponudnikih gostovanja to deluje podobno v njihovem zaslonu za cron. Za spletno trgovino izberite interval od ene do pet minut, raje kot deset. Opravilo, ki se izvaja vsako minuto in nima kaj početi, skoraj nič ne stane.
Action Scheduler: čakalna vrsta WooCommerca
Action Scheduler je čakalna vrsta za opravila v ozadju, ki je priložena WooCommercu in jo uporabljajo tudi številni drugi vtičniki (naročnine, povezave z računovodstvom, e-poštni marketing). Vsako opravilo je dejanje s časom izvedbe in stanjem. Čakalna vrsta se obdeluje prek opravila WP-Cron (action_scheduler_run_queue), zato tudi tu velja: brez zanesljivega crona čakalna vrsta zaostaja.
Vse vidite pod WooCommerce > Stanje > Načrtovana dejanja (Scheduled Actions). Na voljo so zavihki po stanju:
| Stanje | Pomen | Kaj storite |
|---|---|---|
| Čakanje (Pending) | Se mora še izvesti | Če jih je na stotine s časom v preteklosti, čakalna vrsta zaostaja: preverite svoj cron |
| V teku (In-progress) | Se izvaja zdaj | Če dejanje dolgo obvisi, poglejte v dnevnik ob njem |
| Dokončano (Complete) | Opravljeno | Nič; samodejno se počistijo |
| Spodletelo (Failed) | Je vrnilo napako | Preberite sporočilo o napaki v stolpcu Dnevnik; pogosto gre za vtičnik ali povezavo, ki ni dosegljiva |
| Preklicano (Canceled) | Namerno ni bilo izvedeno | Običajno nič |
Glede na izvorno kodo Action Scheduler privzeto počisti dokončana in preklicana dejanja po enem mesecu, spodletela pa po treh mesecih. Če tabela kljub temu hitro raste, se verjetno izvaja veliko dejanj, ki vedno znova spodletijo ali se ustvarjajo; namesto da tabelo samo izpraznite, ugotovite, kateri vtičnik jih ustvarja (pomagata stolpec Skupina in ime hooka).
Primer iz prakse pri Theehuis Example: povezava z računovodskim programom je po spremembi gesla vsako naročilo uvrstila v čakalno vrsto kot spodletelo dejanje. Po enem tednu je bilo 400 spodletelih dejanj, manjkalo pa je 60 računov (lekcija 5.6). Ko je bila povezava popravljena, je skrbnik lahko dejanja posamično znova zagnal z Zaženi zdaj (Run).
Testno okolje za spletno trgovino
Kaj je testno okolje (staging), kako ga ustvarite in kako ga zaščitite (geslo, noindex), je opisano v tečaju o WordPressu, lekcija 8.3. Pri WebOké to lahko storite s kloniranjem v Installatronu (DA 13.7, KB 232) in z mapo, zaščiteno z geslom (DA 15.9); drugi ponudniki gostovanja imajo podobna orodja. Pri spletni trgovini se temu pridruži še nekaj stvari, saj kopija trgovine vsebuje prave podatke o kupcih in lahko izvaja prava dejanja.
Takoj po kloniranju, preden storite karkoli drugega:
- Ponudnik plačil v testnem načinu, s testnimi ključi. Testno okolje z ključi za živo delovanje lahko prejema prava plačila ali izvaja vračila.
- E-pošta izklopljena ali preusmerjena. Sicer kopija pošilja potrditve, opomnike in sporočila o zapuščenih košaricah pravim kupcem. Uporabite vtičnik, ki zadrži vso pošto ali jo pošlje na en testni naslov.
- Povezave in webhooki izklopljeni. Računovodstvo, usklajevanje zaloge, nalepke za pošiljke, e-poštni marketing: sicer testno okolje knjiži račune ali pošilja pakete. Preverite tudi WooCommerce > Nastavitve > Napredno > Webhooki in ključe API.
- Pregled načrtovanih dejanj. Čakalna vrsta je bila kopirana skupaj s trgovino. Čakajoča dejanja (opomnik po e-pošti, plačilo naročnine) se sicer na testnem okolju izvedejo še enkrat.
- Omejitev osebnih podatkov. Če za testiranje ne potrebujete pravih podatkov o kupcih, jih na testnem okolju izbrišite ali anonimizirajte. Testno okolje prav tako sodi pod GDPR in je pogosto slabše zaščiteno (lekcija 5.5).
In najpomembnejše pravilo pri vračanju: baze podatkov testnega okolja nikoli ne prepišite čez delujočo trgovino. Med kloniranjem in vračanjem so nastala nova naročila, kupci, spremembe zaloge in plačila; te bi izgubili. Spremembe znova izvedite na produkciji (zdaj veste, da delujejo) ali uskladite samo datoteke. Če je baza podatkov vseeno nujna, to storite le, ko je trgovina v načinu vzdrževanja, takoj po sveži varnostni kopiji in z orodjem, ki naročila in kupce izpusti.
Testiranje posodobitve na testnem okolju
Običajen postopek za večjo posodobitev WooCommerca ali plačilnega vtičnika:
- Ustvarite svežo kopijo za testno okolje (klon produkcije) in uredite zgornjih pet točk.
- Posodobite na testnem okolju in izvedite posodobitev baze podatkov, če jo WooCommerce zahteva.
- Opravite testno naročilo v testnem načinu: plačilo, neuspešno plačilo, vračilo (lekcija 4.5).
- Pod Načrtovana dejanja in v dnevniku napak preverite, ali so se pojavile nove napake.
- Nato posodobite produkcijo ob mirnem času, s varnostno kopijo tik pred tem (lekcija 6.2).
Povzetek
- WooCommerce opravi veliko dela v ozadju; to poteka prek WP-Cron in Action Schedulerja.
- Za spletno trgovino vedno uporabite pravi cronjob (vsako minuto do vsakih pet minut) namesto WP-Cron ob obiskih.
- Preverjajte WooCommerce > Stanje > Načrtovana dejanja: veliko zapoznelih čakajočih ali spodletelih dejanj pomeni, da cron ali povezava ne deluje.
- Na testnem okolju: ponudnik plačil v testnem načinu, e-pošta in povezave izklopljene, pregled načrtovanih dejanj, omejitev osebnih podatkov.
- Baze podatkov testnega okolja nikoli ne prepišite čez delujočo trgovino; spremembe znova izvedite na produkciji.
Kviz
Naloga
Naloga A7.3: Ali je Vaše testno okolje (staging) zaščiteno? To je enako preverjanje kot naloga A8.3 tečaja o WordPressu. Najprej potrebujete dokazilo o lastništvu domene (zapis TXT _weboke-cursus.<domein> ali datoteko /.well-known/weboke-cursus-<code>.txt s kodo, ki jo prejmete). Nato vnesite naslov svoje trgovine in naslov svojega testnega okolja (gostitelj pod isto domeno). Program brez prijavnih podatkov zahteva domačo stran testnega okolja in domačo stran produkcije. Zeleno, če testno okolje zahteva geslo (401) ali če ima noindex in uporablja svoj naslov (vstopna točka REST kaže na gostitelja testnega okolja), produkcija pa nima noindex. Oranžno, če ima testno okolje noindex, a nima gesla, ali nima veljavnega certifikata. Rdeče, če je testno okolje odprto in ga je mogoče indeksirati, če testno okolje še kaže na naslov produkcije ali če ima produkcija po pomoti noindex.
Vprašanja zase (se ne preverjajo): ali je ponudnik plačil na Vašem testnem okolju v testnem načinu? Ali je e-pošta izklopljena ali preusmerjena? Ali so povezave in webhooki izklopljeni? Koliko čakajočih in spodletelih dejanj je trenutno pod Načrtovana dejanja na produkciji?
Za nadaljnje branje
Ti članki opisujejo korake v nadzornih ploščah WebOké; v drugih nadzornih ploščah delujejo podobno.
- Priročnik DirectAdmin 15.1: Cronjob opravila: samodejno izvajanje opravil
- Ustvarjanje opravila cron (in kaj storiti, če se ne izvede)
- Ustvarjanje testnega okolja (staging) za WordPress
- Priročnik DirectAdmin 13.7: Kloniranje in ustvarjanje testnega okolja (staging)
- Priročnik DirectAdmin 15.9: Z geslom zaščiteni imeniki
- Brezplačni tečaj WordPress 8.3: Testno okolje (staging): varno testiranje
- Brezplačni tečaj WordPress 6.3: Slike, PHP in druge izboljšave hitrosti
- Action Scheduler (actionscheduler.org, v angleščini): https://actionscheduler.org/
