Moodul 7 · 7.3
Cron, Action Scheduler ja testkeskkond (staging)
Moodul 7: Leitavus ja majutus · Lugemisaeg: 10 minutit
Õpieesmärk: Pärast seda õppetundi oskad selgitada, kuidas WooCommerce taustal töid teeb. Oskad kontrollida planeeritud tegevusi ja probleemide korral neid parandada. Oskad ka seadistada e-poele testkeskkonna (staging) nii, et päris kliendid, maksed ja tellimused ei saa kahjustada.
Põhimõisted: WP-Cron, päris cron, DISABLE_WP_CRON, Action Scheduler, planeeritud tegevused, ootel, lõpetatud, ebaõnnestunud, koristamine, e-poe testkeskkond (staging), makseteenuse pakkuja testrežiim, e-kirjad välja, veebikonksud, liidestused, andmebaasi ei taastata tootmiskeskkonna peale
Mis juhtub, kui keegi ei vaata
E-pood teeb palju tööd, mis ei ole otseselt seotud külastaja klikiga:
- tühistab maksmata tellimused, kui laoseisu hoidmise aeg on läbi (õppetund 3.4);
- saadab olekumuutuse järel e-kirju ja liidestustele veebikonkse;
- uuendab halduses aruandeid ja statistikat;
- koristab aegunud sessioone ja ajutisi andmeid;
- rakendab säilitamistähtaegu, mis on määratud jaotises Kontod ja privaatsus (õppetund 2.3);
- tellimuste või raamatupidamisliidestuste puhul: võtab makseid ja edastab andmeid.
Selleks kasutab WordPress WP-Croni ja WooCommerce lisaks sellele Action Schedulerit. Kui need korralikult ei tööta, ei märka sa seda kohe. Märkad siis, kui maksmata tellimused hoiavad endiselt laoseisu kinni, aruanded jäävad tühjaks või mõni liidestus jääb päevi maha.
WP-Cron ja päris cron
Kuidas WP-Cron töötab ja miks päris cron-töö on parem, on kirjas WordPressi kursuse õppetunnis 6.3. Lühidalt: WP-Cron käivitub külastuste ajal, mitte kella järgi. Väheste külastajatega on see ebausaldusväärne ja paljude külastajatega koormav. Lahendus: lisa DISABLE_WP_CRON faili wp-config.php ja loo majutuse halduspaneelis cron-töö, mis käivitab faili wp-cron.php iga paari minuti järel.
E-poe jaoks ei ole see optimeerimine, vaid nõue:
- Öösel, kui külastajaid on vähe, peavad maksmata tellimused ikkagi õigel ajal tühistuma.
- Suure kampaania ajal ei taha sa, et raske taustatöö sõidaks kaasa kliendi lehepäringuga, kes parasjagu maksta tahab.
WebOké juures lood sellise töö DirectAdminis jaotises Cron Jobs (DA 15.1, KB 48), PHP teeks on /usr/local/bin/php. Teiste majutajate juures töötab see sarnaselt nende cron-vaates. Vali e-poele intervall ühest viie minutini, mitte kümme. Töö, mis käivitub iga minut ja millel pole midagi teha, ei maksa peaaegu midagi.
Action Scheduler: WooCommerce’i järjekord
Action Scheduler on taustatööde järjekord, mis tuleb koos WooCommerce’iga ja mida kasutavad ka paljud teised pluginad (tellimused, raamatupidamisliidestused, e-posti turundus). Iga töö on tegevus, millel on aeg ja olek. Järjekorda töödeldakse WP-Croni töö kaudu (action_scheduler_run_queue), nii et ka siin kehtib: ilma usaldusväärse cronita jääb järjekord maha.
Kõike näed jaotises WooCommerce > Olek > Planeeritud tegevused (Scheduled Actions). Iga oleku jaoks on oma vahekaart:
| Olek | Tähendus | Mida teed |
|---|---|---|
| Ootel (Pending) | Peab veel käivituma | Kui neid on sadu ja nende aeg on minevikus, jääb järjekord maha: kontrolli oma cronit |
| Käimas (In-progress) | Käib praegu | Kui tegevus jääb kauaks rippuma, vaata kõrvalolevat logi |
| Lõpetatud (Complete) | Tehtud | Mitte midagi, need koristatakse automaatselt |
| Ebaõnnestunud (Failed) | Andis vea | Loe veateadet logi veerust. Sageli on põhjus plugin või liidestus, mis pole kättesaadav |
| Tühistatud (Canceled) | Jäeti teadlikult tegemata | Tavaliselt mitte midagi |
Lähtekoodi järgi koristab Action Scheduler vaikimisi lõpetatud ja tühistatud tegevused ühe kuu pärast ning ebaõnnestunud tegevused kolme kuu pärast. Kui tabel ikkagi kiiresti kasvab, käib tõenäoliselt palju tegevusi, mis ikka ja jälle ebaõnnestuvad või uuesti luuakse. Selgita välja, milline plugin neid loob (aitavad veerg Grupp ja hooki nimi), selle asemel et tabelit lihtsalt tühjendada.
Näide Theehuis Example’i praktikast: raamatupidamisprogrammi liidestus pani pärast parooli muutmist iga tellimuse järjekorda ebaõnnestunud tegevusena. Nädala pärast oli järjekorras 400 ebaõnnestunud tegevust ja puudus 60 arvet (õppetund 5.6). Pärast liidestuse parandamist sai haldur tegevused ükshaaval uuesti käivitada nupuga Run now (Run).
E-poe testkeskkond
Mis on testkeskkond (staging), kuidas seda luua ja kuidas seda kaitsta (parool, noindex), on kirjas WordPressi kursuse õppetunnis 8.3. WebOké juures saad selleks kasutada Installatroni kloonimist (DA 13.7, KB 232) ja parooliga kaitstud kausta (DA 15.9). Teistel majutajatel on sarnased tööriistad. E-poe puhul lisandub mõni asi, sest e-poe koopia sisaldab päris kliendiandmeid ja võib teha päris toiminguid.
Kohe pärast kloonimist, enne kui midagi muud teed:
- Makseteenuse pakkuja testrežiimi, testvõtmetega. Päris võtmetega testkeskkond võib vastu võtta päris makseid või teha tagasimakseid.
- E-kirjad välja või ümber suunatud. Muidu saadab koopia päris klientidele kinnitusi, meeldetuletusi ja hüljatud ostukorvi kirju. Kasuta pluginat, mis peatab kõik e-kirjad või saadab need ühele testaadressile.
- Liidestused ja veebikonksud välja. Raamatupidamine, laoseisu sünkroonimine, saatesildid, e-posti turundus: muidu kirjendab testkeskkond arveid või saadab pakke teele. Vaata ka jaotist WooCommerce > Sätted > Täpsemad seaded > Veebikonksud ja API-võtmeid.
- Planeeritud tegevused üle. Järjekord on kaasa kopeeritud. Ootel tegevused (meeldetuletuskiri, tellimuse makse) käivituvad muidu testkeskkonnas veel kord.
- Isikuandmeid vähemaks. Kui sul pole testimiseks päris kliendiandmeid vaja, kustuta või anonüümi need testkeskkonnas. Testkeskkonnale kehtib isikuandmete kaitse üldmäärus (GDPR) ja see on sageli halvemini kaitstud (õppetund 5.5).
Ja tagasi kandmise kõige tähtsam reegel: ära kunagi kirjuta testkeskkonna andmebaasi töötava e-poe peale. Kloonimise ja tagasi kandmise vahel on lisandunud tellimusi, kliente, laoseisu muutusi ja makseid. Need läheksid kaotsi. Tee muudatused tootmiskeskkonnas uuesti (nüüd tead, et need töötavad) või sünkrooni ainult faile. Kui andmebaas tuleb siiski üle kanda, tee seda ainult siis, kui e-pood on hooldusrežiimis, kohe pärast värsket varukoopiat ja tööriistaga, mis jätab tellimused ja kliendid vahele.
Uuenduse testimine testkeskkonnas
Tüüpiline kord WooCommerce’i või makseplugina suure uuenduse puhul:
- Loo värske testkeskkond (tootmiskeskkonna kloon) ja sea ülal toodud viis punkti korda.
- Uuenda testkeskkonnas ja käivita andmebaasi uuendus, kui WooCommerce seda küsib.
- Tee testrežiimis testtellimus: maksmine, ebaõnnestumine, tagasimakse (õppetund 4.5).
- Vaata jaotisest Planeeritud tegevused ja vealogist, kas on uusi vigu.
- Seejärel uuenda tootmiskeskkonda rahulikul ajal, vahetult enne seda tehtud varukoopiaga (õppetund 6.2).
Kokkuvõte
- WooCommerce teeb palju tööd taustal. See käib WP-Croni ja Action Scheduleri kaudu.
- Kasuta e-poe jaoks alati päris cron-tööd (iga ühe kuni viie minuti järel), mitte külastustega käivituvat WP-Croni.
- Kontrolli jaotist WooCommerce > Olek > Planeeritud tegevused: palju hilinenud ootel või ebaõnnestunud tegevusi näitab, et cron või mõni liidestus ei tööta.
- Testkeskkonnas: makseteenuse pakkuja testrežiimi, e-kirjad ja liidestused välja, planeeritud tegevused üle, isikuandmeid vähemaks.
- Ära kunagi kirjuta testkeskkonna andmebaasi töötava e-poe peale. Tee muudatused tootmiskeskkonnas uuesti.
Test (quiz)
Ülesanne
Ülesanne A7.3: Kas su testkeskkond (staging) on kaitstud? See on sama kontroll mis WordPressi kursuse ülesanne A8.3. Kõigepealt on sul vaja oma domeeni omandi tõendit (TXT-kirje _weboke-cursus.<domein> või fail /.well-known/weboke-cursus-<code>.txt koodiga, mille saad). Seejärel sisesta oma e-poe aadress ja testkeskkonna aadress (host sama domeeni all). Programm küsib ilma sisselogimisandmeteta testkeskkonna avalehe ja tootmiskeskkonna avalehe. Roheline, kui testkeskkond küsib parooli (401) või kui sellel on noindex ja see kasutab oma aadressi (REST-sissepääs osutab testkeskkonna hostile), samal ajal kui tootmiskeskkonnal noindexit pole. Oranž, kui testkeskkonnal on küll noindex, aga pole parooli, või pole kehtivat sertifikaati. Punane, kui testkeskkond on avatud ja indekseeritav, kui testkeskkond osutab endiselt tootmiskeskkonna aadressile või kui tootmiskeskkonnal on kogemata noindex.
Küsimused endale (neid ei kontrollita): kas makseteenuse pakkuja on su testkeskkonnas testrežiimis? Kas e-kirjad on välja lülitatud või ümber suunatud? Kas liidestused ja veebikonksud on välja lülitatud? Mitu ootel ja ebaõnnestunud tegevust on praegu tootmiskeskkonna jaotises Planeeritud tegevused?
Lisalugemist
Need artiklid kirjeldavad samme WebOké paneelides. Teistes paneelides töötavad need sarnaselt.
- DirectAdmin juhend 15.1: Cron Jobs: lase ülesannetel automaatselt käia
- Cronjobi või ülesande loomine (ja mida teha, kui see ei käivitu)
- Loo WordPressi staging-keskkond
- DirectAdmin juhend 13.7: Klooni oma veebileht ja loo testkeskkond (staging)
- DirectAdmin juhend 15.9: Parooliga kaitstud kaustad
- Tasuta WordPressi kursus 8.3: Testkeskkond (staging): turvaline testimine
- Tasuta WordPressi kursus 6.3: Pildid, PHP ja muud kiirusevõidud
- Action Scheduler (actionscheduler.org, inglise keeles): https://actionscheduler.org/
- WooCommerce staatus ja Planeeritud toimingud: probleemide tuvastamine
- Testkeskkond (staging) sinu veebipoe jaoks
