Δημιουργία cronjob ή εργασίας (και τι να κάνετε αν δεν εκτελείται)
Με ένα cronjob (στο DirectAdmin: Cron Jobs) μπορείτε να εκτελείτε ένα script αυτόματα σε σταθερές ώρες, για παράδειγμα κάθε βράδυ. Παρακάτω θα δείτε πώς να δημιουργήσετε ένα cronjob και τι να κάνετε αν δεν λειτουργεί.
Κανόνες για τα cronjobs
- Ρυθμίστε μια εργασία να ξεκινά το πολύ μία φορά ανά 10 λεπτά. Το ζητάμε από όλους, επειδή μοιράζεστε τον server με άλλες ιστοσελίδες.
- Κατανείμετε τα cronjobs σας σε διαφορετικές ώρες και επιλέξτε μια ήσυχη ώρα, όπως 03:17 αντί για ακριβώς μεσάνυχτα.
- Δεν επιτρέπονται βαριά cronjobs που επιβαρύνουν τον server για μεγάλο διάστημα. Στον ίδιο server λειτουργούν και άλλες ιστοσελίδες. Αν χρειαστεί, διακόπτουμε ένα cronjob. Γι' αυτό διατηρήστε τις εργασίες σας σύντομες και μην τις εκτελείτε συχνότερα από όσο χρειάζεται.
Δημιουργία cronjob
- Συνδεθείτε στο DirectAdmin και, στην ενότητα Advanced Features, κάντε κλικ στο Cron Jobs.
- Κάντε κλικ στο Create Cron Job.
- Συμπληρώστε το λεπτό, την ώρα, την ημέρα, τον μήνα και την ημέρα της εβδομάδας. Στο λεπτό μη βάζετε ποτέ μόνο έναν αστερίσκο, διαφορετικά η εργασία θα εκτελείται κάθε λεπτό. Χρησιμοποιήστε έναν αριθμό ή, για παράδειγμα,
*/15για κάθε 15 λεπτά. - Στην εντολή συμπληρώστε την πλήρη διαδρομή, για παράδειγμα:
/usr/local/bin/php -q /home/gebruiker/domains/yourdomain.gr/public_html/taak.php
Αντικαταστήστε το gebruiker με το όνομα χρήστη σας στο DA. - Κάντε κλικ στο Create.

Email μετά από κάθε cronjob
Η έξοδος ενός cronjob αποστέλλεται στον προεπιλεγμένο λογαριασμό email του πακέτου σας, δείτε Ο προεπιλεγμένος λογαριασμός email στο DirectAdmin. Μπορείτε επίσης να στέλνετε την έξοδο σε δική σας διεύθυνση με το Send all Cron output to E-Mail. Αν δεν θέλετε email, κάντε κλικ στο Prevent E-Mail κατά τη δημιουργία ή προσθέστε μετά την εντολή:
>/dev/null 2>&1
Προσοχή στα PHP scripts
Ένα script που εκτελείται από cronjob δεν γνωρίζει σε ποιο domain εκτελείται. Τα $_SERVER['SERVER_NAME'] και $_SERVER['DOCUMENT_ROOT'] είναι κενά, και ένα include με σχετική διαδρομή μπορεί να αποτύχει. Γι' αυτό προσθέστε στην αρχή του script σας:
$pad = '/home/gebruiker/domains/yourdomain.gr/public_html'; $_SERVER['SERVER_NAME'] = 'yourdomain.gr'; $_SERVER['DOCUMENT_ROOT'] = $pad; set_include_path($pad . PATH_SEPARATOR . get_include_path());
WordPress: WP-Cron μέσω πραγματικού cronjob
Το WordPress διαθέτει δικό του χρονοπρογραμματιστή, το WP-Cron, για εργασίες όπως προγραμματισμένα άρθρα, έλεγχο ενημερώσεων και εργασίες των plugins. Αυτός δεν εκτελείται σε σταθερές ώρες, αλλά μόνο όταν κάποιος επισκέπτεται την ιστοσελίδα σας. Με λίγους επισκέπτες οι εργασίες καθυστερούν, ενώ με πολλούς επισκέπτες κάθε επίσκεψη χρειάζεται λίγο περισσότερο χρόνο. Με ένα κανονικό cronjob το WP-Cron εκτελείται σε σταθερές στιγμές.
- Στο
wp-config.php, πάνω από τη γραμμή/* That's all, stop editing! */, προσθέστε:define( 'DISABLE_WP_CRON', true );
- Στο Cron Jobs δημιουργήστε μια εργασία που εκτελείται, για παράδειγμα, κάθε 15 λεπτά: στο λεπτό συμπληρώστε
*/15και στην ώρα, την ημέρα, τον μήνα και την ημέρα της εβδομάδας έναν αστερίσκο. Η εντολή:/usr/local/bin/php -q /home/gebruiker/domains/yourdomain.gr/public_html/wp-cron.php >/dev/null 2>&1
Αν το WordPress βρίσκεται σε υποφάκελο, συμπεριλάβετέ τον στη διαδρομή. - Την επόμενη ημέρα ελέγξτε στο WordPress, στο Εργαλεία › Υγεία ιστότοπου, ότι δεν υπάρχουν ειδοποιήσεις για προγραμματισμένες εργασίες που καθυστερούν.
Και εδώ τηρήστε το όριο του το πολύ μία φορά ανά 10 λεπτά. Για τις περισσότερες ιστοσελίδες αρκεί κάθε 15 ή 30 λεπτά.
Δεν εκτελείται το cronjob σας;
Ελέγξτε τα παρακάτω σημεία ένα προς ένα:
- Διαβάστε την έξοδο. Αφαιρέστε προσωρινά το
>/dev/null 2>&1και δείτε το email στον προεπιλεγμένο λογαριασμό email ή ορίστε δική σας διεύθυνση. Εκεί συχνά αναφέρεται ακριβώς τι πάει στραβά. Μπορείτε επίσης να γράφετε την έξοδο σε ένα αρχείο καταγραφής, προσθέτοντας μετά την εντολή>> /home/gebruiker/cron-log.txt 2>&1. - Ελέγξτε τη διαδρομή. Το μήνυμα Could not open input file σημαίνει ότι η διαδρομή προς το script δεν είναι σωστή. Ελέγξτε στο File Manager: η διαδρομή ξεκινά με
/home/gebruiker/domains/. - Ελέγξτε την έκδοση PHP. Με το
/usr/local/bin/phpη εργασία χρησιμοποιεί την ίδια έκδοση PHP με την ιστοσελίδα σας. Αν το script σας λειτουργεί μόνο σε άλλη έκδοση, αλλάξτε την στο Select PHP version. - Δοκιμάστε την εντολή χειροκίνητα. Αν το πακέτο σας διαθέτει Terminal, επικολλήστε εκεί την εντολή και δείτε τι συμβαίνει, δείτε Πρόσβαση SSH και το Terminal στο DirectAdmin. Χωρίς Terminal, ανοίξτε το script στον browser σας ή καλέστε το στο cronjob μέσω
curl --silent https://www.yourdomain.gr/taak.php. - Ελέγξτε τα δικαιώματα. Το script πρέπει να είναι αναγνώσιμο: τα αρχεία πρέπει να έχουν δικαιώματα 644 και οι φάκελοι 755. Δείτε Δικαιώματα αρχείων και φακέλων (chmod).
- Ελέγξτε την ώρα εκτέλεσης. Δείτε στο Cronjob will run at: αν η εργασία εκτελείται όταν νομίζετε. Αν υπάρχει αστερίσκος στο λεπτό, εκτελείται κάθε λεπτό. Αυτό είναι πολύ συχνά.
- Ελέγξτε πόση ώρα διαρκεί η εργασία. Αν μια εργασία διαρκεί πολύ ή ξεκινά ξανά πριν ολοκληρωθεί η προηγούμενη, μπορεί να κολλήσει ή να φτάσει το πακέτο σας στα όριά του. Σε αυτή την περίπτωση μοιράστε την εργασία σε περισσότερους γύρους.
date >> /home/gebruiker/cron-log.txt; πριν από την εντολή σας.Δείτε επίσης στον οδηγό του DirectAdmin: Ο προεπιλεγμένος λογαριασμός email του πακέτου σας.
Αναλυτική εξήγηση με στιγμιότυπα οθόνης: Cron Jobs: αυτόματη εκτέλεση εργασιών στον οδηγό του DirectAdmin.
Θέλετε να μάθετε περισσότερα; Παρακολουθήστε το δωρεάν μάθημα WordPress, ενότητα 6.3 Εικόνες, PHP και άλλοι τρόποι βελτίωσης της ταχύτητας.
