Ενότητα 7 · 7.3
Cron, Action Scheduler και staging
Ενότητα 7: Ευρεσιμότητα και hosting · Χρόνος ανάγνωσης: 10 λεπτά
Στόχος μαθήματος: Μετά από αυτό το μάθημα μπορείτε να εξηγήσετε πώς το WooCommerce εκτελεί εργασίες στο παρασκήνιο, να ελέγχετε τις προγραμματισμένες ενέργειες και να τις αποκαθιστάτε όταν υπάρχει πρόβλημα, καθώς και να στήνετε ένα περιβάλλον staging για ένα ηλεκτρονικό κατάστημα με τρόπο που δεν επηρεάζει πραγματικούς πελάτες, πληρωμές ή παραγγελίες.
Βασικές έννοιες: WP-Cron, πραγματικό cron, DISABLE_WP_CRON, Action Scheduler, προγραμματισμένες ενέργειες, σε αναμονή, ολοκληρωμένες, αποτυχημένες, εκκαθάριση, staging για ηλεκτρονικό κατάστημα, δοκιμαστική λειτουργία του παρόχου πληρωμών, απενεργοποίηση email, webhooks, διασυνδέσεις, καμία επαναφορά της βάσης δεδομένων πάνω στην παραγωγή
Τι συμβαίνει όταν κανείς δεν κοιτάζει
Ένα ηλεκτρονικό κατάστημα κάνει πολλή δουλειά που δεν συνδέεται άμεσα με ένα κλικ κάποιου επισκέπτη:
- ακύρωση απλήρωτων παραγγελιών όταν λήξει ο χρόνος δέσμευσης αποθέματος (μάθημα 3.4)·
- αποστολή email μετά από αλλαγή κατάστασης, καθώς και webhooks προς διασυνδέσεις·
- ενημέρωση αναφορών και στατιστικών στη διαχείριση·
- εκκαθάριση ληγμένων συνεδριών και προσωρινών δεδομένων·
- εφαρμογή των χρόνων διατήρησης από την καρτέλα Λογαριασμοί Απόρρητο (μάθημα 2.3)·
- σε συνδρομές ή διασυνδέσεις με λογιστικό πρόγραμμα: χρέωση πληρωμών και προώθηση δεδομένων.
Για αυτά το WordPress χρησιμοποιεί το WP-Cron και το WooCommerce χρησιμοποιεί επιπλέον τον Action Scheduler. Αν αυτά δεν λειτουργούν σωστά, δεν το καταλαβαίνετε αμέσως. Το καταλαβαίνετε όταν απλήρωτες παραγγελίες συνεχίζουν να δεσμεύουν απόθεμα, οι αναφορές μένουν κενές ή μια διασύνδεση καθυστερεί μέρες.
WP-Cron και πραγματικό cron
Πώς λειτουργεί το WP-Cron και γιατί ένα πραγματικό cronjob είναι καλύτερο, εξηγείται στη σειρά μαθημάτων για το WordPress, μάθημα 6.3: το WP-Cron εκτελείται με τις επισκέψεις, όχι με βάση το ρολόι, κάτι που είναι αναξιόπιστο όταν οι επισκέπτες είναι λίγοι και επιβαρυντικό όταν είναι πολλοί. Η λύση: DISABLE_WP_CRON στο wp-config.php και ένα cronjob στον πίνακα ελέγχου του hosting σας που εκτελεί το wp-cron.php κάθε λίγα λεπτά.
Για ένα ηλεκτρονικό κατάστημα αυτό δεν είναι βελτιστοποίηση αλλά απαίτηση:
- Τη νύχτα, όταν η επισκεψιμότητα είναι χαμηλή, οι απλήρωτες παραγγελίες πρέπει παρ' όλα αυτά να ακυρώνονται έγκαιρα.
- Σε μια περίοδο προσφορών με μεγάλη κίνηση, δεν θέλετε μια βαριά εργασία παρασκηνίου να εκτελείται μαζί με το αίτημα σελίδας ενός πελάτη που θέλει να ολοκληρώσει την αγορά του.
Στη WebOké δημιουργείτε μια τέτοια εργασία στο DirectAdmin στην ενότητα Cron Jobs (DA 15.1, KB 48), με /usr/local/bin/php ως διαδρομή προς την PHP· σε άλλους παρόχους hosting λειτουργεί παρόμοια μέσω της αντίστοιχης οθόνης cron. Για ένα ηλεκτρονικό κατάστημα επιλέξτε διάστημα από ένα έως πέντε λεπτά, όχι δέκα. Μια εργασία που εκτελείται κάθε λεπτό και δεν έχει τίποτα να κάνει δεν κοστίζει σχεδόν τίποτα.
Action Scheduler: η ουρά εργασιών του WooCommerce
Ο Action Scheduler είναι μια ουρά για εργασίες παρασκηνίου που παρέχεται μαζί με το WooCommerce και χρησιμοποιείται και από πολλά άλλα πρόσθετα (συνδρομές, διασυνδέσεις με λογιστικά προγράμματα, email marketing). Κάθε εργασία είναι μια ενέργεια με χρονική στιγμή και κατάσταση. Η ουρά διεκπεραιώνεται μέσω μιας εργασίας WP-Cron (action_scheduler_run_queue), οπότε και εδώ ισχύει: χωρίς αξιόπιστο cron η ουρά καθυστερεί.
Όλα φαίνονται στο WooCommerce > Κατάσταση > Προγραμματισμένες ενέργειες (Scheduled Actions). Υπάρχουν καρτέλες ανά κατάσταση:
| Κατάσταση | Σημασία | Τι κάνετε |
|---|---|---|
| Σε αναμονή (Pending) | Πρέπει ακόμη να εκτελεστεί | Αν υπάρχουν εκατοντάδες με χρονική στιγμή στο παρελθόν, η ουρά καθυστερεί: ελέγξτε το cron σας |
| Σε εξέλιξη (In-progress) | Εκτελείται τώρα | Αν μια ενέργεια κολλάει για πολλή ώρα, δείτε το log δίπλα της |
| Ολοκληρωμένη (Complete) | Έγινε | Τίποτα· εκκαθαρίζονται αυτόματα |
| Αποτυχία (Failed) | Παρουσίασε σφάλμα | Διαβάστε το μήνυμα σφάλματος στη στήλη Log· συχνά πρόκειται για ένα πρόσθετο ή μια διασύνδεση που δεν είναι προσβάσιμη |
| Ακυρωμένη (Canceled) | Σκόπιμα δεν εκτελέστηκε | Συνήθως τίποτα |
Σύμφωνα με τον πηγαίο κώδικα, ο Action Scheduler εκκαθαρίζει από προεπιλογή τις ολοκληρωμένες και ακυρωμένες ενέργειες μετά από έναν μήνα και τις αποτυχημένες μετά από τρεις μήνες. Αν ο πίνακας μεγαλώνει παρ' όλα αυτά γρήγορα, τότε πιθανότατα εκτελούνται πολλές ενέργειες που αποτυγχάνουν ή δημιουργούνται ξανά και ξανά· βρείτε ποιο πρόσθετο τις δημιουργεί (βοηθούν η στήλη Ομάδα και το όνομα του hook), αντί απλώς να αδειάσετε τον πίνακα.
Ένα παράδειγμα από την πράξη στο Theehuis Example: μετά από αλλαγή κωδικού πρόσβασης, η διασύνδεση με το λογιστικό πρόγραμμα έβαζε κάθε παραγγελία στην ουρά ως αποτυχημένη ενέργεια. Μετά από μία εβδομάδα υπήρχαν 400 αποτυχημένες ενέργειες και έλειπαν 60 τιμολόγια (μάθημα 5.6). Αφού αποκαταστάθηκε η διασύνδεση, ο διαχειριστής μπόρεσε να εκτελέσει ξανά τις ενέργειες μία προς μία με Run now (Run).
Staging για ένα ηλεκτρονικό κατάστημα
Τι είναι το staging, πώς το δημιουργείτε και πώς το προστατεύετε (κωδικός πρόσβασης, noindex), εξηγείται στη σειρά μαθημάτων για το WordPress, μάθημα 8.3. Στη WebOké αυτό γίνεται με κλωνοποίηση στο Installatron (DA 13.7, KB 232) και έναν φάκελο με κωδικό πρόσβασης (DA 15.9)· άλλοι πάροχοι hosting διαθέτουν παρόμοια εργαλεία. Για ένα ηλεκτρονικό κατάστημα προστίθενται μερικά ακόμη σημεία, επειδή ένα αντίγραφο καταστήματος περιέχει πραγματικά δεδομένα πελατών και μπορεί να εκτελέσει πραγματικές ενέργειες.
Αμέσως μετά την κλωνοποίηση, πριν κάνετε οτιδήποτε άλλο:
- Πάροχος πληρωμών σε δοκιμαστική λειτουργία, με δοκιμαστικά κλειδιά. Ένα staging με κλειδιά live μπορεί να δεχτεί πραγματικές πληρωμές ή να εκτελέσει επιστροφές χρημάτων.
- Email απενεργοποιημένο ή ανακατευθυνόμενο. Διαφορετικά, ένα αντίγραφο στέλνει επιβεβαιώσεις, υπενθυμίσεις και email εγκαταλελειμμένου καλαθιού σε πραγματικούς πελάτες. Χρησιμοποιήστε ένα πρόσθετο που μπλοκάρει όλα τα email ή τα στέλνει σε μία δοκιμαστική διεύθυνση.
- Διασυνδέσεις και webhooks απενεργοποιημένα. Λογιστική, συγχρονισμός αποθέματος, ετικέτες αποστολής, email marketing: διαφορετικά το staging καταχωρεί τιμολόγια ή αποστέλλει δέματα. Ελέγξτε επίσης το WooCommerce > Ρυθμίσεις > Για προχωρημένους > Webhooks και τα κλειδιά API.
- Έλεγχος των προγραμματισμένων ενεργειών. Η ουρά έχει αντιγραφεί μαζί με τα υπόλοιπα. Διαφορετικά, ενέργειες σε αναμονή (ένα email υπενθύμισης, μια πληρωμή συνδρομής) θα εκτελεστούν ξανά στο staging.
- Περιορισμός των προσωπικών δεδομένων. Αν δεν χρειάζεστε πραγματικά δεδομένα πελατών για τις δοκιμές, διαγράψτε τα ή ανωνυμοποιήστε τα στο staging. Ένα staging εμπίπτει κι αυτό στον GDPR και συχνά είναι λιγότερο καλά προστατευμένο (μάθημα 5.5).
Και ο σημαντικότερος κανόνας κατά την επαναφορά: μην επαναφέρετε ποτέ τη βάση δεδομένων του staging πάνω σε ένα κατάστημα σε λειτουργία. Από τη στιγμή της κλωνοποίησης μέχρι την επαναφορά έχουν προστεθεί παραγγελίες, πελάτες, μεταβολές αποθέματος και πληρωμές· αυτά θα τα χάσετε. Εφαρμόστε ξανά τις αλλαγές στην παραγωγή (τώρα ξέρετε ότι λειτουργούν) ή συγχρονίστε μόνο αρχεία. Αν πρέπει οπωσδήποτε να γίνει με τη βάση δεδομένων, κάντε το μόνο με το κατάστημα σε λειτουργία συντήρησης, αμέσως μετά από ένα νέο αντίγραφο ασφαλείας και με ένα εργαλείο που παραλείπει παραγγελίες και πελάτες.
Δοκιμή μιας ενημέρωσης στο staging
Μια τυπική διαδρομή για μια μεγάλη ενημέρωση του WooCommerce ή ενός προσθέτου πληρωμών:
- Δημιουργήστε ένα νέο staging (κλώνο της παραγωγής) και ρυθμίστε σωστά τα πέντε παραπάνω σημεία.
- Κάντε την ενημέρωση στο staging και εκτελέστε την ενημέρωση της βάσης δεδομένων αν τη ζητήσει το WooCommerce.
- Κάντε μια δοκιμαστική παραγγελία με τη δοκιμαστική λειτουργία: πληρωμή, αποτυχία, επιστροφή χρημάτων (μάθημα 4.5).
- Ελέγξτε στις Προγραμματισμένες ενέργειες και στο αρχείο σφαλμάτων αν υπάρχουν νέα σφάλματα.
- Στη συνέχεια ενημερώστε την παραγωγή σε μια ήσυχη στιγμή, με αντίγραφο ασφαλείας λίγο πριν (μάθημα 6.2).
Σύνοψη
- Το WooCommerce κάνει πολλή δουλειά στο παρασκήνιο· αυτή εκτελείται μέσω του WP-Cron και του Action Scheduler.
- Για ένα ηλεκτρονικό κατάστημα χρησιμοποιείτε πάντα ένα πραγματικό cronjob (κάθε ένα έως πέντε λεπτά) αντί για WP-Cron με τις επισκέψεις.
- Ελέγχετε το WooCommerce > Κατάσταση > Προγραμματισμένες ενέργειες: πολλές καθυστερημένες ενέργειες σε αναμονή ή αποτυχημένες ενέργειες δείχνουν ότι το cron ή μια διασύνδεση δεν λειτουργεί.
- Στο staging: πάροχος πληρωμών σε δοκιμαστική λειτουργία, email και διασυνδέσεις απενεργοποιημένα, έλεγχος προγραμματισμένων ενεργειών, περιορισμός προσωπικών δεδομένων.
- Μην επαναφέρετε ποτέ μια βάση δεδομένων staging πάνω σε ένα κατάστημα σε λειτουργία· εφαρμόστε ξανά τις αλλαγές στην παραγωγή.
Κουίζ
Άσκηση
Άσκηση A7.3: Είναι το staging σας προστατευμένο; Πρόκειται για τον ίδιο έλεγχο με την άσκηση A8.3 της σειράς μαθημάτων για το WordPress. Χρειάζεστε πρώτα απόδειξη ιδιοκτησίας για το domain σας (ένα TXT record _weboke-cursus.<domein> ή ένα αρχείο /.well-known/weboke-cursus-<code>.txt με τον κωδικό που λαμβάνετε). Στη συνέχεια συμπληρώστε τη διεύθυνση του καταστήματός σας και τη διεύθυνση του staging σας (ένας host στο ίδιο domain). Το πρόγραμμα ζητά την αρχική σελίδα του staging, χωρίς στοιχεία σύνδεσης, και εκείνη της παραγωγής. Πράσινο αν το staging ζητά κωδικό πρόσβασης (401) ή αν έχει noindex και χρησιμοποιεί τη δική του διεύθυνση (το σημείο εισόδου REST παραπέμπει στον host του staging), ενώ η παραγωγή δεν έχει noindex. Πορτοκαλί αν το staging έχει noindex αλλά όχι κωδικό πρόσβασης ή δεν έχει έγκυρο πιστοποιητικό. Κόκκινο αν το staging είναι ανοιχτό και ευρετηριάσιμο, αν το staging εξακολουθεί να παραπέμπει στη διεύθυνση της παραγωγής ή αν η παραγωγή έχει κατά λάθος noindex.
Ερωτήσεις για εσάς (δεν ελέγχονται): είναι ο πάροχος πληρωμών στο staging σας σε δοκιμαστική λειτουργία; Είναι το email απενεργοποιημένο ή ανακατευθυνόμενο; Έχουν απενεργοποιηθεί οι διασυνδέσεις και τα webhooks; Πόσες ενέργειες σε αναμονή και πόσες αποτυχημένες ενέργειες υπάρχουν αυτή τη στιγμή στις Προγραμματισμένες ενέργειες της παραγωγής;
Περαιτέρω ανάγνωση
Αυτά τα άρθρα περιγράφουν τα βήματα στους πίνακες ελέγχου της WebOké· σε άλλους πίνακες ελέγχου λειτουργούν παρόμοια.
- Εγχειρίδιο DirectAdmin 15.1: Cron Jobs: εργασίες αυτόματα σε προκαθορισμένο χρόνο
- Δημιουργία cronjob ή εργασίας (και τι να κάνετε αν δεν εκτελείται)
- Δημιουργία περιβάλλοντος staging για WordPress
- Εγχειρίδιο DirectAdmin 13.7: Κλωνοποίηση και δημιουργία περιβάλλοντος δοκιμών (staging)
- Εγχειρίδιο DirectAdmin 15.9: Με κωδικό πρόσβασης προστατευμένοι φάκελοι
- Δωρεάν μάθημα WordPress 8.3: Staging: ασφαλείς δοκιμές
- Δωρεάν μάθημα WordPress 6.3: Εικόνες, PHP και άλλα κέρδη ταχύτητας
- Action Scheduler (actionscheduler.org, στα Αγγλικά): https://actionscheduler.org/
