Uruchomienie jednego zadania nie brzmi jak wyzwanie dla człowieka, co jednak gdy chcemy je wykonać w środku nocy, gdy zdecydowanie bardziej chcielibyśmy spać? Uruchamianie skryptu ręcznie co kilka minut również nie wygląda zachęcająco? Na szczęście nie musimy robić tego manualnie, nie musimy też nikogo do tego zatrudniać, chyba że uznamy że serwer jest kimś, co w czasach wszechobecnej sztucznej inteligencji, jest co najmniej kwestią kontrowersyjną, wystarczy tutaj skonfigurować zadanie Cron, które wykona większość pracy za nas.
- Czym jest systemowy harmonogram zadań cron
- Jak skonfigurować zadanie
- Praktyczne zastosowania zadań cron
- Jak wyłączyć automatycznego cron’a w WordPress
Czym jest systemowy harmonogram zadań cron
Cron to systemowy harmonogram zadań używany w systemach operacyjnych Unix i Unix-podobnych (w tym Linux) do automatyzacji zadań. Dzięki cron możesz ustawić cykliczne wykonywanie skryptów, komend, czy innych programów w określonych odstępach czasu.
Gdy mamy już zaplanowane zadanie, serwer za pośrednictwem daemona “crond”, uruchamia zadania. Jest to swoiste serce, zegar, który co minutę wprawia w ruch kolejne zadania, według ustalonego harmonogramu.
Konfiguracja zadania cron
Nie zwalniamy tempa i przechodzimy do konfiguracji zadania. Możemy zrobić to na dwa sposoby, wprowadzając je w odpowiedniej formie – składni, do pliku crontab, lub korzystając z graficznego interfejsu użytkownika (GUI).
Informujemy: na naszym hostingu masz dostęp do wspomnianego interfejsu, który jest połączony z plikiem crontab. Gdy dokonamy zmian w jednym miejscu, będą one widoczne również w drugim. Aby go uruchomić przejdź do Panelu Klienta i wybierz Zaawansowane, a następnie Zadania cykliczne (cron).
Na potrzeby tego poradnika wybiorę właśnie wersję graficzną.
Po przejściu do konfiguracji zadań cron powita Cię krótka ściąga (1) odnosząca się do samego harmonogramu. Zawiera ona najpotrzebniejsze informacje, dzięki którym przypomnisz sobie jak to wykonywać.
Natomiast główna sekcja (2) zawiera już możliwość odpowiedniej konfiguracji całego zadania, wraz z ustawieniem komendy (3), która ma być wykonywana.
Najmniejszą jednostką czasu jaką możemy operować to minuta, więc zadania będą uruchamiane co do minuty, z kolei największa częstotliwość z jaką zadanie może być wykonywane to co minutę.
Domyślne ustawienie które zastaniesz w interfejsie utworzy zadanie, które będzie wykonywało się co minutę, a to za sprawą * gwiazdek w każdym z 5 pól. Gwiazdka działa jako wyrażenie regularne i zastępuje każdą liczbę. Opisując to słowami, komenda będzie wykonywana każdego dnia tygodnia, każdego miesiąca, każdego dnia danego miesiąca, w każdej godzinie i każdej minucie.
Warto od razu przedstawić inne wyrażenie regularne, czyli znak slash: /
Razem z gwiazdką daje on możliwości ustawienia przedziału czasowego w trochę innej formie, na przykład:
- Co dwie minuty
Minuta: */2 - Co 12 godzin
Godzina: */12 - Co trzeci miesiąc
Miesiąc: */3
Ostatnie dwa wyrażenia to przecinek i myślnik.
Przecinek daje możliwość podania danych wartości liczbowych w jednym polu. Dla przykładu:
Komenda będzie się wykonywała tylko w niedzielę, środę i czwartek.
Dzień tygodnia: 0,3,4
Informujemy: Niedziela może być określana wartością 0 lub 7.
Komenda będzie się wykonywała od 1 do 5 danego miesiąca, od 7 do 10, a również 15 i 23:
Dzień miesiąca: 1-5,7-10,15,23
Praktyczne zastosowania zadań cron
Przykład 1: Uruchamianie skryptu PHP codziennie o 2:00 w nocy
Harmonogram:
- Minuta: 0
- Godzina: 2
- Dzień miesiąca: *
- Miesiąc: *
- Dzień tygodnia: *
- Komenda: /usr/local/bin/php80 /home/poradnik/scripts/skrypt.php
Przykład 2: Uruchamianie skryptu co godzinę
Harmonogram:
- Minuta: 0
- Godzina: *
- Dzień miesiąca: *
- Miesiąc: *
- Dzień tygodnia: *
Komenda: wget -q -O /dev/null „https://domena.pl/skrypt.php” >/dev/null 2>&1
Przykład 3: Automatyczne odświeżanie bazy danych co godzinę w godzinach pracy (od 8:00 do 18:00) od poniedziałku do piątku
Harmonogram:
- Minuta: 0
- Godzina: 8-18
- Dzień miesiąca: *
- Miesiąc: *
- Dzień tygodnia: 1-5 (poniedziałek-piątek)
Komenda: /usr/local/bin/php82 /home/poradnik/domena.pl/public_html/baza.php
Przykład 4: Synchronizacja danych z serwerem zdalnym (backup) codziennie o północy:
Harmonogram:
- Minuta: 0
- Godzina: 0
- Dzień miesiąca: *
- Miesiąc: *
- Dzień tygodnia: *
Komenda: /usr/local/bin/rsync -avz /home/poradnik/dane/ user@zewnętrzny_serwer:/backup/data/
Jak wyłączyć automatycznego cron’a w WordPress
Wyłączenie automatycznego cron’a w WordPress i przejście na systemowy cron może zwiększyć wydajność Twojej strony, zwłaszcza w przypadku stron o dużym ruchu lub specyficznych wymaganiach dotyczących zarządzania zadaniami cron. Po wykonaniu powyższych kroków, zadania cron w WordPress będą zarządzane przez systemowy cron, co zapewni bardziej niezawodne i regularne wykonywanie zaplanowanych zadań.
Informujemy: Jeśli chcesz przyspieszyć działanie swojego WordPress’a przeczytaj nasz artykuł Jak zoptymalizować wydajność i szybkość swojej strony internetowej?
Przechodzimy do działania:
Krok 1.
Edytuj plik wp-config.php:
Zaloguj się na serwer, na którym zainstalowany jest WordPress, za pomocą FTP, SFTP lub menedżera plików w panelu administracyjnym hostingu.
Informujemy: Jeśli nie wiesz w jaki sposób zalogować się do konta FTP, mamy dla Ciebie poradnik Konfiguracja połączenia FTP w programie FileZilla
Krok 2.
Przejdź do katalogu głównego instalacji WordPress i znajdź plik wp-config.php (najczęściej taki plik znajduje się w katalogu public_html domeny).
Otwórz plik wp-config.php w edytorze tekstu.
Krok 3.
Dodaj następujący kod do pliku wp-config.php, najlepiej przed linijką /* That’s all, stop editing! Happy blogging. */:
define(’DISABLE_WP_CRON’, true);
Zapisz zmiany i zamknij plik.
Krok 4.
Po wyłączeniu automatycznego cron’a w WordPress, musisz skonfigurować systemowy cron, aby zadania cron były nadal wykonywane.
Otwórz graficzny interfejs konfiguracji cron i wprowadź poniższe dane, które pozwolą na włączanie crona co 5 minut (możesz oczywiście ustawić własną wartość):
Harmonogram:
- Minuta: */5
- Godzina: *
- Dzień miesiąca: *
- Miesiąc: *
- Dzień tygodnia: *
Komenda: /usr/local/bin/php80 /home/uzytkownik/domains/public_html/wp-cron.php > /dev/null 2>&1
Informujemy: /dev/null jest specjalnym plikiem w systemach Unix/Linux, który działa jak „czarna dziura”. Oznacza to, że wszystko, co zostanie do niego wysłane, zostanie natychmiast usunięte. Używa się go, aby zignorować wyjście komend, które nie jest potrzebne.
2>&1 to składnia używana w powłoce (shell), która przekierowuje wyjście błędów (standardowe wyjście błędów, stderr) na standardowe wyjście (stdout).
Podsumowanie
Zarządzanie zadaniami cron jest nieodzowne dla efektywnej administracji serwerem, automatyzacji procesów oraz zapewnienia regularnego wykonywania ważnych zadań. Dzięki cron można zaoszczędzić czas i zasoby, jednocześnie zwiększając niezawodność systemu, dlatego na pewno warto się nad tym zagadnieniem pochylić.