Cron to narzędzie (w systemach Unix / Linux), które pozwala automatycznie uruchomić na serwerze zadania o określonym czasie i dacie. Może to być włączenie jakiegoś skryptu, programu, procedury SSH itp. W Magento popularne usługi Crona to na przykład: masowe wysyłanie wiadomości email, aktualizacja cen, stanów magazynowych, generowanie map witryn Google, reindex.

USTAWIENIE USŁUGI CRON W MAGENTO 2

1. Tworzymy nowy moduł np: Geek_Tester (/app/code/Geek/Tester):

– zdefiniuj moduł w pliku module.xml (/app/code/Geek/Tester/etc/module.xml):

– zarejestruj moduł w pliku registration.php (/app/code/Geek/Tester/registration.php):

2. Ustaw konfigurację Crona w pliku crontab.xml (/app/code/Geek/Tester/etc/crontab.xml):

  • <group> – znacznik grupujący zadania Crona; atrybut id=”default to identyfikator grupy,
  • <job> – zadanie o nazwie name=”custom_cronjob” i metodzie execute zdefiniowanej w klasie: instance=”Geek\Tester\Cron\Test”,
  • <schedule>* * * * *</schedule> – harmonogram, czas na cykliczne wykonanie zadań z metody execute, – w tym przypadku pięć gwiazdek oznacza, że co minutę.

Poniżej znaczenie poszczególnych symboli ” * ” (od lewej strony):
* – minuta (0 – 59)
* – godzina (0 – 23)
* – dzień miesiąca (1 – 31)
* – miesiąc (1 – 12)
* – dzień tygodnia (0 – 7) (Niedziela = 0 lub 7)

Dla przykładu, gdybyśmy chcieli uruchamiać zadanie co 5 minut zawartość znacznika schedule będzie miała postać:

3. Dodaj plik Test.php (/app/code/Geek/Tester/Cron/Test.php). Metoda execute korzystając z interfejsu Logger zapisuje w logach serwera krótką informację „Test Cron” z datą wykonania zadania. Metoda ta będzie uruchamiana przez Crona.

4. Uruchom wiersz poleceń i wykonaj poniższe procedury. Spowodują one aktualizację wpisów w bazie Magento, kompilację kodu PHP i opróżnienie cache’a.

5. Aby uruchomić manualnie wszystkie zadania Crona wykonaj polecenie:

Polecenie należy powtórzyć dwa lub trzy razy. Przy pierwszym uruchomieniu Cron kolejkuje zadania a następnie uruchamiane są poszczególne zadania. Stany operacji zapisywane są do tabeli cron_schedule.

6. Sprawdź zawartość pliku system.log (/var/log/system.log). Powinieneś otrzymać jeden lub więcej wpisów z metody execute (klasa Test.php):


KONFIGURACJA NIESTANDARDOWEJ GRUPY ZADAŃ CRON

Jeśli chcesz aby twoje zadania działały według innego harmonogramu lub z różnymi ustawieniami niż inne zadania Crona, wtedy należy dodać dodatkowy plik konfiguracyjny cron_groups.xml (/app/code/Geek/Tester/etc/cron_groups.xml):

Identyfikator grupy id=”geek_group_name” musisz zaktualizować również w pliku crontab.xml:

Uruchom z wiersza poleceń grupę zadań Crona o nazwie geek_group_name:

Ustawienia z pliku cron_groups.xml pojawią się również w panelu admina w sekcji: Sklepy > Ustawienia > Konfiguracja > Zaawansowane > System – zakładka „Cron (Zaplanowane zadania)„: