Oceń ten artykuł :
3/5 | 1 opinia
Ten artykuł był dla Ciebie przydatny ?
Tak
Nie
Vous avez noté 0 étoile(s)
Sommaire
Procédure
Celem zadania cron jest automatyczne uruchamianie skryptu, polecenia lub programu o określonych porach.
Za pomocą"LWS cron job" można zaplanować uruchamianie skryptu w witrynie o różnych porach. Na przykład raz w tygodniu, raz dziennie, 8 dnia każdego miesiąca itp.
Cron jest bardzo przydatnym narzędziem dla administratorów systemu do automatyzacji różnych zadań, takich jak tworzenie kopii zapasowych danych, aktualizacja oprogramowania,wysyłanie wiadomości e-mail itp.
Do tych zadań stosowany jest limit czasu wynoszący 240 sekund, co oznacza, że jeśli uruchomienie skryptu zajmie więcej niż 4 minuty, zostanie on automatycznie zamknięty po 4 minutach.
Najpierw musisz zalogować się na swoje konto LWS i uzyskać dostęp do hostingu współdzielonego, dla którego chcesz utworzyć zadanie cron.
Po wejściu w zarządzanie usługą, poszukaj bloku"Baza danych i PHP" i kliknij"Zadania Cron".

Pierwszą rzeczą, którą należy skonfigurować dla zadania cron, jest jego okresowość.
Na tym poziomie LWS oferuje wstępne ustawienia w swoim narzędziu, dzięki czemu można to skonfigurować jednym kliknięciem.
Aby to zrobić, wystarczy skorzystać z pierwszej listy w górnej części formularza i wybrać jeden z proponowanych parametrów. Spowoduje to automatyczne wypełnienie pól zgodnie z okresowością wskazaną na wybranej liście.

Jeśli okresowość, którą chcesz ustawić, nie jest proponowana na tej pierwszej liście, nie martw się, możemy skonfigurować każdy element.
Dla każdego elementu (minuty, godziny, dni itp.) można wprowadzić wartości ręcznie lub użyć pola listy po prawej stronie każdego pola.
Jeśli na przykład chcę, aby moje zadanie rozpoczynało się codziennie o godzinie 12:27, wystarczy wybrać liczbę 27 na liście dołączonej do pola minut i wybrać 12:00 pm (południe) na liście dołączonej do pola godziny.
Istnieją trzy sposoby wywołania skryptu za pomocą narzędzia Cron Task:
Różnica między tymi trzema opcjami polega głównie na sposobie wykonywania skryptu.
Wywołanie Wget lub Curl wykorzystuje protokół HTTP, co oznacza, że będzie podlegać konfiguracjom Apache i ograniczeniom, takim jak limit czasu, który może być stosunkowo krótki.
Z drugiej strony, wywołaniePHP będzie wolne od ograniczeń, które omówiliśmy z pozostałymi dwiema metodami. Pomyśl o wywołaniu PHP jako o przejściu przez połączenie SSH.
Możesz więc zastanawiać się, którą metodę wybrać do skonfigurowania zadania Cron. Nasza odpowiedź jest taka, że nie ma rzeczywistych różnic dla podstawowych skryptów, które działają szybko. Jeśli jednak zadanie CRON jest dość duże, z wieloma wykonywanymi akcjami, a zatem nieco dłuższym czasem wykonania, najbardziej odpowiednią metodą będzie wywołaniePHP. W przeciwieństwie do Curl lub Wget, limit czasu będzie dłuższy (4 min).
Przyjrzymy się, jak skonfigurować zadanie cron dla każdego z wyżej wymienionych wywołań. Jako przykład weźmiemy prostą witrynę wywołującą skrypt główny.
Wywołanie cURL
Wykonując wywołanie curl przy użyciu protokołu HTTP, po prostu wywołujemy adres URL do naszego pliku w następujący sposób
curl -s -H "Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php" > /dev/null
Możemy również potrzebować wysłać parametry do naszego skryptu. Aby to zrobić, wystarczy dodać je w następujący sposób:
curl -d "param1=value1¶m2=value2" -s -H "Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php" > /dev/null
Pozwoli nam to pobrać te wartości parametrów w kodzie naszego skryptu POST.
| Opcja | Rola |
|---|---|
-s |
Tryb cichy (bez paska postępu). |
-H "Cache-Control: no-cache" |
Wymusza brak pamięci podręcznej po stronie serwera. |
> /dev/null |
Przekierowuje dane wyjściowe, aby nic nie zapisywać. |
Wywołanie Wget
Podczas wywołania Wget, które również używa protokołu HTTP, podobnie jak w przypadku wywołania cURL, wywołamy również adres URL naszego skryptu. W ten sposób otrzymamy :
wget --no-cache --output-document=/dev/null --header="Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php"
Jeśli musimy przekazać parametry do skryptu, z Wget nie będziemy mieli wyboru, jak tylko przekazać parametry w GET. Oto jak napisać polecenie :
wget --no-cache --output-document=/dev/null --header="Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php?param1=value1¶m2=value2"
W skrypcie możemy pobrać te dwa parametry w GET.
| Opcja | Rola |
|---|---|
--no-cache |
Pozwala uniknąć korzystania z pośrednich pamięci podręcznych (przydatne w przypadku niektórych serwerów proxy). |
--output-document=/dev/null |
Nie przechowuje niczego lokalnie. |
--header="Cache-Control: no-cache" |
Wysyła nagłówek HTTP, aby uniknąć buforowania po stronie serwera. |
Wywołanie PHP
W przypadku prostej witryny, wyobraźmy sobie, że plik zawierający mój skrypt nazywa się cron.php
Wszystko, co musisz zrobić, to wpisać następujące polecenie w narzędziu Cron Task:
php /htdocs/cron.php
Tutaj, wersja PHP używana do uruchomienia skryptu będzie domyślnie 8.0.
Jeśli chcesz użyć konkretnej wersji PHP, po prostu zmodyfikuj nieco wywołanie. Na przykład, jeśli chcesz użyć wersji 7.2 do uruchomienia skryptu, jest to polecenie o nazwie :
php72 /htdocs/cron.php
Możemy również potrzebować przekazać argument, który zostanie następnie użyty w naszym skrypcie.
Na przykład, wyobraźmy sobie, że celem naszego skryptu jest wysłanie wiadomości e-mail na podstawie zdefiniowanego przez nas kryterium, takiego jak data urodzin. Możemy zatem chcieć przekazać to kryterium w wywołaniu. Oto jak to zrobić za pomocą wiersza poleceń :
php72 /htdocs/cron.php type=anniversary
Przypadki specjalne
Istnieją również specjalne przypadki w zależności od tego, czego używasz w swojej witrynie.
Na przykład w przypadku witryny utworzonej za pomocą frameworka Cakephp konfiguracja zadania CRON będzie nieco inna, ponieważ zostanie wykonana za pomocą polecenia SHELL wywoływanego przez system frameworka.
Wyobraźmy sobie, że mamy witrynę e-commerce utworzoną za pomocą frameworka Cakephp i chcemy skonfigurować skrypt, który wyśle wiadomość e-mail do najlepszego klienta, aby zaoferować mu kod promocyjny.
Utworzymy polecenie Cake, które nazwiemy SendCP i które będzie zawierać skrypt zarządzający tym, co chcemy zrobić. Oto jak skonfigurujemy zadanie Cron:
php72 /htdocs/Console/cake.php SendCP
Podanie przykładu każdego przypadku zajęłoby dużo czasu, ale dzięki temu, co zostało tutaj podane, masz już dobre podstawy do korzystania z narzędzia zadań Cron.
Korzystając z różnych przykładów, wiemy teraz, jak napisać nasze polecenie, aby :
Przyjrzymy się teraz, jak utworzyć plik dziennika, abyśmy mogli zobaczyć, co wydarzyło się podczas skryptu wywoływanego przez Cron.
Aby to zrobić, użyjemy poniższego przykładu dla naszego skryptu CRON.
Przykład funkcji echo PHP dla pliku dziennika
<?php /* Więc nie musisz się martwić o buforowanie */ header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); /* Write the current date to the file, for example: 2023/01/19 12:24:01 */ /* PHP_EOL allows you to skip a line in the file */ echo date('Y/m/d h:i:s').PHP_EOL; /* Zapisz poniższe zdanie w pliku dziennika */ echo 'Nagrywanie mojego Crona'.PHP_EOL.PHP_EOL; ?
Renderowanie pliku dziennika po uruchomieniu skryptu za pośrednictwem zadania Cron
2023/01/19 02:57:01 Nagrywanie mojego Crona 2023/01/19 03:57:01 Nagrywanie mojego Crona 2023/01/19 04:57:01 Nagrywanie mojego Crona 2023/01/19 05:57:01 Nagrywanie mojego Crona 2023/01/19 06:57:01 Nagrywanie mojego Crona 2023/01/19 07:57:01 Nagrywanie mojego Crona 2023/01/19 08:57:01 Nagrywanie mojego Crona
To, co umieścisz w pliku dziennika, będzie zatem zależeć od ciebie i tego, co chcesz śledzić w swoim skrypcie. Na przykład może to być lista działań z wynikiem dla każdego z nich.
Przykład wywołania cURL ze zwrotem w pliku dziennika
W przypadku wywołania cURL, oto polecenie, które należy wpisać w polu "Command":
curl -s -H "Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php" > /htdocs/logs/cron_curl.log 2>&1
W tym przykładzie zapisy zwrotne (echo PHP) zostaną wykonane do pliku cron_curl.log w folderze logs. Jeśli plik lub folder nie istnieje, zostanie utworzony automatycznie.
| Opcja | Rola |
|---|---|
-s |
Tryb cichy (bez paska postępu). |
-H "Cache-Control: no-cache" |
Wymusza brak pamięci podręcznej po stronie serwera. |
> /htdocs/logs/cron_curl.log |
przekierowuje standardowe wyjście (stdout) do cron_curl.log. |
| 2>&1 | przekierowuje również błędy (stderr) do tego samego pliku. |
Przykład wywołania wget z powrotem do pliku dziennika
Oto polecenie, którego należy użyć do wywołania Wget:
wget -O - -q --no-cache --header="Cache-Control: no-cache" "https://www.mon-domaine.fr/cron.php" > /htdocs/logs/cron_wget.log 2>&1
W tym przykładzie informacja zwrotna zapisu (echo PHP) zostanie wysłana do pliku cron_wget.log w folderze logs. Jeśli plik lub folder nie istnieje, zostanie utworzony automatycznie.
| Opcja | Rola |
|---|---|
--no-cache |
Unika korzystania z pośrednich pamięci podręcznych (przydatne w przypadku niektórych serwerów proxy). |
--header="Cache-Control: no-cache" |
Wysyła nagłówek HTTP, aby uniknąć buforowania po stronie serwera. |
| --post-data="..." | dodaje niestandardowy nagłówek HTTP. |
> /htdocs/logs/cron_wget.log |
przekierowuje standardowe wyjście (stdout) do cron_wget.log. |
| 2>&1 | przekierowuje również błędy (stderr) do tego samego pliku. |
Przykład wywołania PHP z powrotem do pliku dziennika
W przypadku wywołania PHO, oto polecenie, którego należy użyć:
php72 /htdocs/cron.php >> /htdocs/logs/cron_php.log
W tym przykładzie informacja zwrotna o zapisie (echo PHP) zostanie wysłana do pliku cron_php.log w folderze logs. Jeśli plik lub folder nie istnieje, zostanie utworzony automatycznie.
Po utworzeniu zadań cron można je znaleźć bezpośrednio na liście wyświetlanej poniżej formularza dodawania.

Znajduje się tam lista z zarejestrowanymi poleceniami, okresowością i opcją usunięcia zadania cron lub wstrzymania go.

Jeśli posiadasz pakiet LWS Starter lub wyższy, możesz zmodyfikować zadanie cron dla swojego pakietu za pomocą terminala internetowego dostępnego z poziomu administracji pakietem.
Aby to zrobić, połącz się ze swoim hostingiem i uzyskaj dostęp do hostingu współdzielonego, dla którego chcesz zmodyfikować zadanie cron.
Kliknij"Terminal" w sekcji "Oprogramowanie".

Uzyskaj dostęp do pliku cron za pomocą następującego polecenia:
crontab -e

Po wejściu do pliku cron, przejrzyj plik w poszukiwaniu zadania, które chcesz zmodyfikować. Każda linia w pliku reprezentuje oddzielne zadanie. Następnie zmodyfikuj zadanie cron, upewniając się, że składnia pozostaje poprawna. Następnie zapisz je za pomocą skrótu klawiaturowego [CTRL]+X, a następnie"Y". Następnie naciśnij [Enter].
Następnie możesz sprawdzić, czy zadanie cron zostało poprawnie zmodyfikowane, używając następującego polecenia:
crontab -l

Połączyłeś swoją domenę z CloudFlare za pomocą DNS tego ostatniego i chcesz skonfigurować zadanie cron z obszaru klienta w powiązanej sekcji, ale zadanie wykonuje się tylko raz bez powtarzania się w żądanym przedziale czasu. Problem ten jest znany, CloudFlare blokuje wykonywanie cronów wysyłanych z naszych usług. Aby przezwyciężyć ten problem, oto obejście.
Zadania cron skonfigurowane w obszarze klienta nie działają, jeśli korzystasz z CloudFlare DNS. Aby rozwiązać ten problem, wykonaj poniższą procedurę:
W sekcji "DNS" dodaj rekord CNAME, jak pokazano w poniższym przykładzie:

Zastąp"cron" nazwą swojej subdomeny, a"domain.ext" nazwą swojej domeny.
Upewnij się, że chmura jest szara, a nie pomarańczowa. To informuje CloudFlare, że nie chcesz korzystać z jego usług dla tej subdomeny.
Następnie możesz kliknąć przycisk"Dodaj rekord".
Teraz wiesz, jak : - Zrozumieć cel i działanie zadania cron 🤖
Mamy nadzieję, że ten artykuł dostarczył ci wszystkich kluczy do opanowania zadań cron i wydajnej automatyzacji zadań systemowych.
Jeśli masz jakieś pytania, opinie lub wskazówki, którymi chcesz się podzielić, nie wahaj się zostawić ich w komentarzu. Dzięki za przeczytanie i do zobaczenia wkrótce po więcej praktycznych porad! 🙏💬
Oceń ten artykuł :
3/5 | 1 opinia
Ten artykuł był dla Ciebie przydatny ?
Tak
Nie
0mn czytanie
Multi-domena - umieszczenie kilku domen w tej samej usłudze hostingowej.
1mn czytanie
Czy możliwe jest usunięcie funkcji antyspamowej RSpamD na hostingu współdzielonym?
0mn czytanie
Jak mogę wyświetlić wiadomości e-mail wysłane przy użyciu funkcji poczty PHP i zablokowane przez SPAMASSASSIN?