SPIS TREŚCI
- Wprowadzenie
- Z jakich rozszerzeń dla pliku mogę skorzystać przy funkcji CRON?
- Jak skorzystać z funkcji CRON na serwerze w home.pl?
- Jak tworzyć poprawne ścieżki do folderów (skrypt)?
- Inne przykłady zastosowania funkcji CRON
- Jak uruchamiać cyklicznie skrypty dla różnych wersji, np. PHP lub Python?
- Jak zabezpieczyć się przed wywołaniem pliku CRON przez dowolnego użytkownika?
Wprowadzenie
- 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.
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-04.php” zostanie uruchomiony o godzinie 04:00 przez interpreter PHP.
cron-[hhmm].[rozszerzenie]
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
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.:
- cron-1545.php – zostanie uruchomione codziennie o 15:45 dla wersji PHP ustawionej w preferencjach serwera lub dla danej lokalizacji za pomocą pliku htaccess.
- cron-1545.php53 – zostanie uruchomione codziennie o 15:45 dla wersji PHP 5.3
- cron-1545.php7 – zostanie uruchomione codziennie o 15:45 dla wersji PHP 7
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?
: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"'); ?>