Modul 7 · 7.3
Cron, Action Scheduler a staging
Modul 7: Vyhľadateľnosť a hosting · Čas čítania: 10 min.
Cieľ lekcie: Po tejto lekcii dokážete vysvetliť, ako WooCommerce vykonáva úlohy na pozadí, skontrolovať plánované akcie a pri problémoch ich opraviť a nastaviť staging prostredie pre e-shop tak, aby neboli ohrození skutoční zákazníci a nevznikli problémy so skutočnými platbami ani objednávkami.
Kľúčové pojmy: WP-Cron, skutočný cron, DISABLE_WP_CRON, Action Scheduler, plánované akcie, čakajúce, dokončené, neúspešné, čistenie, staging pre e-shop, testovací režim poskytovateľa platieb, vypnuté e-maily, webhooky, prepojenia, neprepisovať produkčnú databázu
Čo sa deje, keď sa nikto nepozerá
E-shop vykonáva veľa práce, ktorá nesúvisí priamo s kliknutím návštevníka:
- ruší nezaplatené objednávky, keď uplynie čas na držanie zásob (lekcia 3.4);
- posiela e-maily po zmene stavu a webhooky do prepojených systémov;
- aktualizuje prehľady a štatistiky v administrácii;
- čistí vypršané relácie a dočasné údaje;
- uplatňuje doby uchovávania z Účty a súkromie (lekcia 2.3);
- pri predplatnom alebo prepojení s účtovníctvom strháva platby a odosiela údaje.
Na to WordPress používa WP-Cron a WooCommerce k tomu navyše Action Scheduler. Ak nefungujú správne, nezistíte to hneď. Prejaví sa to tak, že nezaplatené objednávky ďalej blokujú zásoby, prehľady zostávajú prázdne alebo prepojenie mešká o niekoľko dní.
WP-Cron a skutočný cron
Ako WP-Cron funguje a prečo je skutočná úloha cron lepšia, nájdete v kurze WordPress, lekcia 6.3: WP-Cron sa spúšťa pri návštevách, nie podľa hodín, a to je nespoľahlivé pri malom počte návštevníkov a zaťažujúce pri veľkom počte. Riešenie: DISABLE_WP_CRON v súbore wp-config.php a úloha cron v hostingovom paneli, ktorá spúšťa wp-cron.php každých pár minút.
Pre e-shop to nie je optimalizácia, ale nevyhnutnosť:
- V noci, keď je málo návštev, sa nezaplatené objednávky aj tak musia zrušiť včas.
- Počas rušnej akcie zase nechcete, aby sa náročná úloha na pozadí zviezla s požiadavkou zákazníka, ktorý chce zaplatiť.
Vo WebOké vytvoríte takúto úlohu v DirectAdmin v časti CRON úlohy (DA 15.1, KB 48), s cestou k PHP /usr/local/bin/php; u iných poskytovateľov hostingu to funguje podobne v ich obrazovke pre cron. Pre e-shop zvoľte interval od jednej do piatich minút, radšej ako desať. Úloha, ktorá beží každú minútu a nemá čo robiť, nestojí takmer nič.
Action Scheduler: front úloh WooCommerce
Action Scheduler je front úloh na pozadí, ktorý sa dodáva s WooCommerce a používa ho aj mnoho ďalších pluginov (predplatné, prepojenia s účtovníctvom, e-mailový marketing). Každá úloha je akcia s časom a stavom. Front sa spracúva cez úlohu WP-Cron (action_scheduler_run_queue), takže aj tu platí: bez spoľahlivého cronu front mešká.
Všetko nájdete v WooCommerce > Stav > Plánované akcie (Scheduled Actions). Pre každý stav je samostatná karta:
| Stav | Význam | Čo urobiť |
|---|---|---|
| Čakajúci (Pending) | Ešte sa má spustiť | Ak ich je stovky s časom v minulosti, front mešká: skontrolujte cron |
| Prebieha (In-progress) | Práve beží | Ak akcia dlho visí, pozrite sa do záznamu vedľa nej |
| Dokončené (Complete) | Hotovo | Nič; automaticky sa vyčistia |
| Neúspešné (Failed) | Skončila chybou | Prečítajte si chybové hlásenie v stĺpci Záznam; často ide o plugin alebo prepojenie, ktoré nie je dostupné |
| Zrušené (Canceled) | Zámerne nevykonané | Väčšinou nič |
Podľa zdrojového kódu Action Scheduler predvolene čistí dokončené a zrušené akcie po mesiaci, neúspešné po troch mesiacoch. Ak tabuľka napriek tomu rýchlo rastie, pravdepodobne beží veľa akcií, ktoré opakovane zlyhávajú alebo sa stále znova vytvárajú; namiesto obyčajného vyprázdnenia tabuľky zistite, ktorý plugin ich vytvára (pomôže stĺpec Skupina a názov hooku).
Príklad z praxe v Theehuis Example: prepojenie s účtovným programom po zmene hesla zaradilo každú objednávku do frontu ako neúspešnú akciu. Po týždni tam bolo 400 neúspešných akcií a chýbalo 60 faktúr (lekcia 5.6). Po oprave prepojenia mohol správca akcie jednotlivo znova spustiť pomocou Spustiť (Run).
Staging pre e-shop
Čo je staging, ako ho vytvoriť a ako ho chrániť (heslo, noindex), nájdete v kurze WordPress, lekcia 8.3. Vo WebOké to ide pomocou klonovania v Installatron (DA 13.7, KB 232) a priečinka chráneného heslom (DA 15.9); iní poskytovatelia hostingu majú podobné nástroje. Pri e-shope pribúda niekoľko vecí navyše, pretože kópia e-shopu obsahuje skutočné údaje zákazníkov a môže vykonávať skutočné akcie.
Hneď po klonovaní, skôr než urobíte čokoľvek iné:
- Poskytovateľ platieb v testovacom režime, s testovacími kľúčmi. Staging s ostrými kľúčmi môže prijímať skutočné platby alebo vykonávať vrátenia peňazí.
- E-maily vypnuté alebo presmerované. Inak kópia posiela potvrdenia, pripomienky a e-maily o opustenom košíku skutočným zákazníkom. Použite plugin, ktorý zadrží všetky e-maily alebo ich pošle na jednu testovaciu adresu.
- Prepojenia a webhooky vypnuté. Účtovníctvo, synchronizácia zásob, prepravné štítky, e-mailový marketing: inak staging zaúčtuje faktúry alebo odošle balíky. Skontrolujte aj WooCommerce > Nastavenia > Pokročilé > Webhook a kľúče API.
- Prejsť plánované akcie. Front sa skopíroval spolu s webom. Čakajúce akcie (pripomienkový e-mail, platba predplatného) by sa inak na stagingu spustili ešte raz.
- Obmedziť osobné údaje. Ak na testovanie nepotrebujete skutočné údaje zákazníkov, na stagingu ich vymažte alebo anonymizujte. Staging podlieha GDPR a býva často horšie zabezpečený (lekcia 5.5).
A najdôležitejšie pravidlo pri vracaní zmien: nikdy neprepisujte databázou zo stagingu bežiaci e-shop. Medzi klonovaním a vrátením pribudli objednávky, zákazníci, pohyby zásob a platby; tie by ste stratili. Zmeny vykonajte znova na produkcii (teraz už viete, že fungujú), alebo synchronizujte iba súbory. Ak to musí byť aj s databázou, robte to iba s e-shopom v režime údržby, hneď po čerstvej zálohe a s nástrojom, ktorý objednávky a zákazníkov vynechá.
Testovanie aktualizácie na stagingu
Typický postup pri veľkej aktualizácii WooCommerce alebo platobného pluginu:
- Vytvorte čerstvý staging (klon produkcie) a nastavte päť bodov uvedených vyššie.
- Aktualizujte na stagingu a spustite aktualizáciu databázy, ak o ňu WooCommerce požiada.
- Urobte testovaciu objednávku v testovacom režime: zaplatenie, neúspešná platba, vrátenie peňazí (lekcia 4.5).
- Skontrolujte Plánované akcie a chybový záznam, či nepribudli nové chyby.
- Potom aktualizujte produkciu v pokojnom čase, so zálohou tesne predtým (lekcia 6.2).
Zhrnutie
- WooCommerce vykonáva veľa práce na pozadí; beží cez WP-Cron a Action Scheduler.
- Pre e-shop vždy používajte skutočnú úlohu cron (každú jednu až päť minút) namiesto WP-Cron pri návštevách.
- Kontrolujte WooCommerce > Stav > Plánované akcie: veľa oneskorených čakajúcich alebo neúspešných akcií je znakom, že cron alebo niektoré prepojenie nefunguje.
- Na stagingu: poskytovateľ platieb v testovacom režime, e-maily a prepojenia vypnuté, plánované akcie prejdené, osobné údaje obmedzené.
- Nikdy neprepisujte databázou zo stagingu bežiaci e-shop; zmeny vykonajte znova na produkcii.
Kvíz
Úloha
Úloha A7.3: Je váš staging chránený? Ide o rovnakú kontrolu ako úloha A8.3 z kurzu WordPress. Najprv potrebujete doklad o vlastníctve vašej domény (záznam TXT _weboke-cursus.<domein> alebo súbor /.well-known/weboke-cursus-<code>.txt s kódom, ktorý dostanete). Potom zadajte adresu vášho e-shopu a adresu vášho stagingu (host pod rovnakou doménou). Program načíta domovskú stránku stagingu bez prihlasovacích údajov a domovskú stránku produkcie. Zelená, ak staging vyžaduje heslo (401), alebo ak má noindex a používa vlastnú adresu (vstupný bod REST ukazuje na host stagingu), pričom produkcia noindex nemá. Oranžová, ak má staging noindex, ale nie heslo, alebo nemá platný certifikát. Červená, ak je staging otvorený a indexovateľný, ak staging stále ukazuje na adresu produkcie, alebo ak má produkcia omylom noindex.
Otázky pre vás (nekontrolujú sa): Je poskytovateľ platieb na vašom stagingu v testovacom režime? Sú e-maily vypnuté alebo presmerované? Sú prepojenia a webhooky vypnuté? Koľko čakajúcich a neúspešných akcií je teraz v Plánovaných akciách na produkcii?
Ďalšie čítanie
Tieto články opisujú kroky v paneloch WebOké; v iných paneloch fungujú podobne.
- Návod na DirectAdmin 15.1: CRON úlohy: automatické spúšťanie úloh
- Vytvorenie cronjobu alebo úlohy (a čo robiť, ak nebeží)
- Vytvorenie stagingového prostredia pre WordPress
- Návod na DirectAdmin 13.7: Klonovanie a vytvorenie testovacieho prostredia (staging)
- Návod na DirectAdmin 15.9: Adresáre chránené heslom
- Bezplatný kurz WordPress 8.3: Staging: bezpečné testovanie
- Bezplatný kurz WordPress 6.3: Obrázky, PHP a ďalšie zrýchlenie
- Action Scheduler (actionscheduler.org, v angličtine): https://actionscheduler.org/
