Cykliczne uruchamianie – CRON

SPIS TREŚCI

Wprowadzenie

Cykliczne uruchamianie skryptów „Cron” opiera się na zaprogramowanym wywołaniu odpowiednio nazwanych skryptów, znajdujących się w katalogu głównym Twojego serwera w home.pl. Czas wywołania skryptu może zostać ściśle zdefiniowany według przedziałów:
  • co pięć minut,
  • co godzinę (hourly),
  • codziennie (daily),
  • co tydzień (weekly),
  • co miesiąc (monthly)
  • o ściśle określonej godzinie (z dokładnością do 5 minut).

Z jakich rozszerzeń dla pliku mogę skorzystać przy funkcji CRON?

Dostępne rozszerzenia dla funkcji CRON to:

  • .php
  • .pl
  • .cgi
  • .py

Jak skorzystać z funkcji CRON na serwerze w home.pl?

Aby skorzystać z funkcji CRON, należy w katalogu głównym serwera umieścić skrypt z nazwą według zasady:

cron-[hourly|daily|monthly|weekly].[rozszerzenie]

W przypadku usług Hosting Start, Hosting Biznes, Hosting Profesjonalny lub Hosting Premium, WordPress Hosting SSD plik ze skryptem, który ma być cyklicznie uruchamiany przez mechanizm CRON, powinien zostać umieszczony w katalogu /public_html. Oznacza to, że przypadku wymienionych powyżej usług to katalog /public_html jest katalogiem głównym dla serwera.

Dokładne godziny uruchomień:

  • hourly – pełne godziny *:00,
  • daily – codziennie o 1:15,
  • weekly – w sobotę o 1:30,
  • monthly- pierwszego każdego miesiąca o 1:45.
Przykładowo plik „cron-daily.php” będzie uruchamiany codziennie o 1:15, przy zastosowaniu interpretera PHP.
WAŻNE! Nie można cyklicznie wywoływać skryptów z rozszerzeniem .php3

Jak tworzyć poprawne ścieżki do folderów (skrypt)?

Podczas uruchamiania CRONA wykonywane jest wydzielanie katalogu (potocznie mówiąc „chrootowanie”) z punktu widzenia użytkownika do katalogu: /home/ftpmg/public_html/

Dla funkcji CRON katalogiem głównym staje się katalog /public_html/. Podczas tworzenia ścieżek w skryptach uruchamianych przez CRON, należy korzystać z odwołań w formie: /skrypt.php. Wszystkie inne odwołania, np.: /public_html/skrypt.php, będą niepoprawne.

Inne przykłady zastosowania funkcji CRON:

cron-[godzina].[rozszerzenie]
Plik „cron-13.php” będzie wykonywany codziennie o godzinie 13:00 przez interpreter PHP.
Plik „cron-04.php” zostanie uruchomiony o godzinie 04:00 przez interpreter PHP.
cron-[hhmm].[rozszerzenie]
Plik „cron-1545.php” zostanie wykonany codziennie o 15:45.
Maksymalna dokładność to 5 minut – np. nie zadziała plik o nazwie „cron-1546.php”.
cron-[xx]min.[rozszerzenie] - gdzie xx oznacza min. Dozwolone wartości: 5, 10, 15, 20, 30
Plik „cron-5min.php” będzie wykonywany co 5 minut, począwszy od momentu opublikowania pliku w katalogu głównym serwera w home.pl.

Jak uruchamiać cyklicznie skrypty dla różnych wersji, np. PHP lub Python?

Jeśli chcesz cyklicznie uruchamiać skrypt przygotowany w języku PHP, np. dla różnych wersji, to dodaj w tym celu numer wersji do rozszerzenia pliku, np.:

Jeśli chcesz cyklicznie uruchomiać skrypt przygotowany w języku Python, np. w wersji 2.7 lub 3.6, to dodaj w tym celu numer wersji do rozszerzenia pliku, np.:

  • cron-1545.py   zostanie uruchomione codziennie o 15:45 dla Python w wersji 2.7
  • cron-1545.py3 – zostanie uruchomione codziennie o 15:45 dla Python w wersji 3.6

Jak zabezpieczyć się przed wywołaniem pliku CRON przez dowolnego użytkownika?

Środowisko, które powoduje cykliczne uruchamianie skryptów jest identyczne ze środowiskiem, w jakim uruchamiane są skrypty na serwerach wirtualnych. W praktyce oznacza to, że wywołanie takie niewiele różni się od zwykłego wywołania GET po protokole HTTP.
W celu zabezpieczenia się przed wywołaniem pliku cron przez dowolnego użytkownika, zablokuj do niego dostęp w pliku „.htaccess”. Możesz to wykonać wpisując w zawartość pliku „.htaccess” następujący kod:
:Location /cron-daily.php
Access deny all

Plik „.htaccess” z zawartością, która powoduje blokadę wywołania pliku CRON należy umieścić w katalogu głównym serwera. W linii zaczynającej się od frazy „:Location” zdefiniuj nazwę pliku CRON, który ma zostać zablokowany przed wywołaniem.

Dodatkowe instrukcje odnośnie funkcjonowania CRON w home.pl:

W sytuacji w której np. plik CRON znajduje się w podkatalogu, warunkiem jego uruchomienia będzie ręczne wywołanie go w przeglądarce lub umieszczenie w katalogu głównym serwera pliku CRON uruchamiającego.

Jeżeli dany skrypt PHP wykonuje się poprawnie, gdy wywoływany jest z poziomu przeglądarki, a nie dzieje się tak kiedy skrypt wywoływany jest w pliku cron, to sugerujemy przeniesienie treści skryptu do dowolnego innego pliku PHP i uruchamiania tego skryptu z pliku crona poleceniem wzorowanym na poniższym:

<?php system('wget --delete-after http://konto.home.pl/plik.php'); ?>

W przypadku, gdy wywoływany skrypt wymaga autoryzacji http:

<?php system('wget --delete-after --user=UŻYTKOWNIK --password=HASŁO http://konto.home.pl/plik.php'); ?>

W przypadku, gdy skrypt wywoływany jest z użyciem protokołu https:

<?php system('wget --delete-after --no-check-certificate https://konto.home.pl/plik.php'); ?>

Analogicznie z zastosowaniem polecenia curl:

<?php system('curl -f -s http://konto.home.pl/plik.php'); ?>

W przypadku, gdy wywoływany skrypt wymaga autoryzacji http:

<?php system('curl -f -s -u UŻYTKOWNIK:HASŁO http://konto.home.pl/plik.php'); ?>

W przypadku, gdy skrypt wywoływany jest z użyciem protokołu https:

<?php system('curl -f -s -k https://konto.home.pl/plik.php'); ?>

W przypadku, gdy wywoływany skrypt zawiera w adresie znaki specjalne, link należy ująć dodatkowo w cudzysłowie:

 <?php system('curl -f -s -k "https://konto.home.pl/plik.php?id_conf=123&key=1EjEI7qkphxpK83PIZpM"'); ?>
  • Czy artykuł był pomocny ?
  • Tak   Nie