7. modulis · 7.3
Cron, Action Scheduler un testa vide (staging)
7. modulis: Atrodamība un hostings · Lasīšanas laiks: 10 min.
Mērķis: Pēc šīs nodarbības Jūs varēsiet izskaidrot, kā WooCommerce izpilda uzdevumus fonā, pārbaudīt plānotās darbības un problēmu gadījumā tās atjaunot, kā arī iestatīt veikalam testa vidi (staging) tā, lai netiktu ietekmēti īsti klienti, maksājumi vai pasūtījumi.
Pamatjēdzieni: WP-Cron, īsts cron, DISABLE_WP_CRON, Action Scheduler, plānotās darbības, gaidošs, pabeigts, neizdevās, tīrīšana, testa vide veikalam, maksājumu pakalpojumu sniedzēja testa režīms, izslēgts e-pasts, webhooks, integrācijas, datubāzi neatjaunot pāri produkcijai
Kas notiek, kad neviens neskatās
Veikals veic daudz darba, kas nav tieši saistīts ar apmeklētāja klikšķi:
- atceļ neapmaksātus pasūtījumus, kad beidzies krājumu rezervēšanas laiks (nodarbība 3.4);
- sūta e-pastus pēc statusa maiņas un webhooks uz integrācijām;
- atjaunina pārskatus un statistiku administrācijas panelī;
- notīra beigušās sesijas un pagaidu datus;
- izpilda glabāšanas termiņus no sadaļas Konti un konfidencialitāte (nodarbība 2.3);
- abonementu vai grāmatvedības integrāciju gadījumā: iekasē maksājumus un pārsūta datus.
Šim nolūkam WordPress izmanto WP-Cron, un WooCommerce papildus izmanto Action Scheduler. Ja tie nedarbojas pareizi, Jūs to uzreiz nepamanāt. To pamanāt, kad neapmaksāti pasūtījumi turpina rezervēt krājumus, pārskati paliek tukši vai integrācija atpaliek par vairākām dienām.
WP-Cron un īsts cron
Kā darbojas WP-Cron un kāpēc īsts cron uzdevums ir labāks, ir aprakstīts WordPress kursa nodarbībā 6.3: WP-Cron darbojas apmeklējumu laikā, nevis pēc pulksteņa, un tas ir neuzticami, ja apmeklētāju ir maz, un noslogo serveri, ja apmeklētāju ir daudz. Risinājums: DISABLE_WP_CRON failā wp-config.php un cron uzdevums Jūsu hostinga panelī, kas ik pēc dažām minūtēm palaiž wp-cron.php.
Veikalam tā nav optimizācija, bet gan prasība:
- Naktī, kad apmeklētāju ir maz, neapmaksātie pasūtījumi tomēr ir jāatceļ laikā.
- Intensīvas akcijas laikā Jūs noteikti nevēlaties, lai smags fona uzdevums tiktu izpildīts kopā ar tā klienta lapas pieprasījumu, kurš vēlas norēķināties.
WebOké šādu uzdevumu Jūs izveidojat DirectAdmin sadaļā Cron Jobs (DA 15.1, KB 48), norādot /usr/local/bin/php kā ceļu uz PHP; pie citiem hostinga pakalpojumu sniedzējiem tas notiek līdzīgi viņu cron logā. Veikalam izvēlieties intervālu no vienas līdz piecām minūtēm, labāk nekā desmit. Uzdevums, kas darbojas katru minūti un kuram nav ko darīt, izmaksā gandrīz neko.
Action Scheduler: WooCommerce rinda
Action Scheduler ir fona uzdevumu rinda, kas tiek piegādāta kopā ar WooCommerce un ko izmanto arī daudzi citi spraudņi (abonementi, grāmatvedības integrācijas, e-pasta mārketings). Katrs uzdevums ir darbība ar laiku un statusu. Rinda tiek apstrādāta ar WP-Cron uzdevumu (action_scheduler_run_queue), tāpēc arī šeit ir spēkā: bez uzticama cron rinda atpaliek.
Visu var redzēt sadaļā WooCommerce > Statuss > Plānotās darbības (Scheduled Actions). Katram statusam ir sava cilne:
| Statuss | Nozīme | Ko darīt |
|---|---|---|
| Gaidošs (Pending) | Vēl jāizpilda | Ja to ir simtiem un ar laiku pagātnē, rinda atpaliek: pārbaudiet savu cron |
| Notiek apstrāde (In-progress) | Darbojas pašlaik | Ja darbība ilgi neturpinās, skatiet žurnālu blakus |
| Pabeigts (Complete) | Izpildīts | Neko; tās tiek notīrītas automātiski |
| Neizdevās (Failed) | Radās kļūda | Izlasiet kļūdas paziņojumu kolonnā Log (žurnāls); bieži vainīgs ir spraudnis vai nesasniedzama integrācija |
| Atcelts (Canceled) | Apzināti netika izpildīts | Parasti neko |
Saskaņā ar pirmkodu Action Scheduler pēc noklusējuma notīra pabeigtās un atceltās darbības pēc mēneša, bet neizdevušās pēc trim mēnešiem. Ja tabula tomēr strauji aug, visticamāk, darbojas daudz darbību, kas atkārtoti neizdodas vai tiek veidotas no jauna; noskaidrojiet, kurš spraudnis tās veido (palīdz kolonna Grupa un hook nosaukums), nevis tikai iztukšojiet tabulu.
Praktisks piemērs no Theehuis Example: integrācija ar grāmatvedības programmu pēc paroles maiņas katru pasūtījumu ievietoja rindā kā neizdevušos darbību. Pēc nedēļas bija 400 neizdevušās darbības un trūka 60 rēķinu (nodarbība 5.6). Pēc integrācijas salabošanas administrators varēja darbības pa vienai palaist atkārtoti ar Run now (Run).
Testa vide veikalam
Kas ir testa vide (staging), kā to izveidot un kā to aizsargāt (parole, noindex), ir aprakstīts WordPress kursa nodarbībā 8.3. WebOké to var izdarīt, klonējot Installatron (DA 13.7, KB 232) un izmantojot ar paroli aizsargātu mapi (DA 15.9); citiem hostinga pakalpojumu sniedzējiem ir līdzīgi rīki. Veikalam klāt nāk vairākas lietas, jo veikala kopija satur īstus klientu datus un var veikt īstas darbības.
Uzreiz pēc klonēšanas, pirms darāt jebko citu:
- Maksājumu pakalpojumu sniedzējs testa režīmā, ar testa atslēgām. Testa vide ar reālajām atslēgām var saņemt īstus maksājumus vai veikt atmaksas.
- E-pasts izslēgts vai novirzīts. Citādi kopija sūta apstiprinājumus, atgādinājumus un pamesta groza e-pastus īstiem klientiem. Izmantojiet spraudni, kas aiztur visus e-pastus vai sūta tos uz vienu testa adresi.
- Integrācijas un webhooks izslēgti. Grāmatvedība, krājumu sinhronizācija, piegādes etiķetes, e-pasta mārketings: citādi testa vide grāmato rēķinus vai nosūta sūtījumus. Pārbaudiet arī sadaļu WooCommerce > Iestatījumi > Uzlabots > Webhooks un API atslēgas.
- Plānoto darbību pārskatīšana. Rinda ir nokopēta līdzi. Citādi gaidošās darbības (atgādinājuma e-pasts, abonementa maksājums) testa vidē tiks izpildītas vēlreiz.
- Personas datu ierobežošana. Ja testēšanai Jums nav vajadzīgi īsti klientu dati, izdzēsiet vai anonimizējiet tos testa vidē. Uz testa vidi attiecas arī VDAR (GDPR), un tā bieži ir sliktāk aizsargāta (nodarbība 5.5).
Un svarīgākais noteikums, atjaunojot datus: nekad neatjaunojiet testa vides datubāzi pāri strādājošam veikalam. Laikā starp klonēšanu un atjaunošanu ir nākuši klāt pasūtījumi, klienti, krājumu izmaiņas un maksājumi; tie tad tiks zaudēti. Veiciet izmaiņas atkārtoti produkcijā (tagad Jūs zināt, ka tās darbojas) vai sinhronizējiet tikai failus. Ja tomēr jāizmanto datubāze, dariet to tikai ar veikalu apkopes režīmā, uzreiz pēc jaunas rezerves kopijas un ar rīku, kas izlaiž pasūtījumus un klientus.
Atjauninājuma testēšana testa vidē
Tipisks ceļš lielam WooCommerce vai maksājumu spraudņa atjauninājumam:
- Izveidojiet jaunu testa vidi (produkcijas klonu) un sakārtojiet piecus iepriekš minētos punktus.
- Atjauniniet testa vidē un izpildiet datubāzes atjaunināšanu, ja WooCommerce to pieprasa.
- Veiciet testa pasūtījumu testa režīmā: apmaksa, neizdevies maksājums, atmaksa (nodarbība 4.5).
- Pārbaudiet sadaļā Plānotās darbības un kļūdu žurnālā, vai ir jaunas kļūdas.
- Pēc tam atjauniniet produkciju mierīgā brīdī ar rezerves kopiju tieši pirms tam (nodarbība 6.2).
Kopsavilkums
- WooCommerce veic daudz darba fonā; tas notiek ar WP-Cron un Action Scheduler palīdzību.
- Veikalam vienmēr izmantojiet īstu cron uzdevumu (ik pēc vienas līdz piecām minūtēm), nevis WP-Cron apmeklējumu laikā.
- Pārbaudiet WooCommerce > Statuss > Plānotās darbības: daudz nokavētu gaidošu vai neizdevušos darbību liecina, ka cron vai kāda integrācija nedarbojas.
- Testa vidē: maksājumu pakalpojumu sniedzējs testa režīmā, e-pasts un integrācijas izslēgtas, plānotās darbības pārskatītas, personas dati ierobežoti.
- Nekad neatjaunojiet testa vides datubāzi pāri strādājošam veikalam; veiciet izmaiņas atkārtoti produkcijā.
Tests (quiz)
Uzdevums
Uzdevums A7.3: Vai Jūsu testa vide (staging) ir aizsargāta? Šī ir tā pati pārbaude kā WordPress kursa uzdevums A8.3. Vispirms Jums vajadzīgs sava domēna īpašumtiesību apliecinājums (TXT ieraksts _weboke-cursus.<domein> vai fails /.well-known/weboke-cursus-<code>.txt ar kodu, ko saņemat). Pēc tam ievadiet sava veikala adresi un testa vides adresi (resursdatoru tajā pašā domēnā). Programma bez pieteikšanās datiem pieprasa testa vides sākumlapu un produkcijas sākumlapu. Zaļš, ja testa vide pieprasa paroli (401) vai ja tai ir noindex un tā izmanto savu adresi (REST ieeja norāda uz testa vides resursdatoru), bet produkcijai noindex nav. Oranžs, ja testa videi ir noindex, bet nav paroles, vai nav derīga sertifikāta. Sarkans, ja testa vide ir atvērta un indeksējama, ja testa vide joprojām norāda uz produkcijas adresi vai ja produkcijai kļūdas pēc ir noindex.
Jautājumi sev (netiek pārbaudīti): vai maksājumu pakalpojumu sniedzējs Jūsu testa vidē ir testa režīmā? Vai e-pasts ir izslēgts vai novirzīts? Vai integrācijas un webhooks ir izslēgti? Cik gaidošu un neizdevušos darbību pašlaik ir sadaļā Plānotās darbības produkcijā?
Papildu lasāmviela
Šie raksti apraksta darbības WebOké paneļos; citos paneļos tās darbojas līdzīgi.
- DirectAdmin rokasgrāmata 15.1: Cron Jobs: uzdevumus likt izpildīties automātiski
- Cronjob vai uzdevuma izveide (un ko darīt, ja tas nedarbojas)
- WordPress testa vides (staging) izveide
- DirectAdmin rokasgrāmata 13.7: Klonēšana un testa vides (staging) izveide
- DirectAdmin rokasgrāmata 15.9: Ar paroli aizsargāti direktoriji
- Bezmaksas WordPress kurss 8.3: Testa vide (staging): droša testēšana
- Bezmaksas WordPress kurss 6.3: Attēli, PHP un citi ātrdarbības uzlabojumi
- Action Scheduler (actionscheduler.org, angļu valodā): https://actionscheduler.org/
