Wczoraj przy okazji rozmowy o automatyzacji marketingu (nie tylko internetowego) pokazałem koleżance platformę Mautic, z której korzystam (będzie o tym niebawem większy wpis, bo chyba Mautic zawita też na Webinsider.pl, oczywiście by zautomatyzować marketing, czyli tzw. Marketing Automation ;-)). Platforma się spodobała na tyle, że koleżanka od razu rzuciła mi, że ona też chce. Szybko w myślach odszukałem rekord, w którym zapisane mam, że koleżanka korzysta z hostingu w Home.pl (Business Cloud), co od razu wzbudziło moje obawy, co do tego, że cała operacja przebiegnie bez problemów…

Para-CRON w Home.pl

Pierwsza decyzja jaką musieliśmy podjąć, to czy instalacja będzie na dedykowanej domenie lub subdomenie, czy w katalogu. Domena lub subdomena mimo, iż wydawała się najlepszym wyjściem, to oznaczałaby zakup kolejnego certyfikatu SSL, co w Home.pl akurat jest relatywnie tanie, ale tylko w pierwszym roku.

Stąd zapadła decyzja, że będzie podkatalog. Co oczywiście sprawiło, że pojawiło się kilka małych problemów do rozwiązania, nawet nie tyle wynikających bezpośrednio z tego, że Home.pl to – moim zdaniem – dość specyficzny hosting, i wiele – wydawałoby się – standardowych rzeczy potrafi zaskoczyć, co ogólnie z samego faktu, że instalacja nastąpiła w podkatalogu. Więcej o tym będzie przy wpisie o platformie Mautic, tutaj tylko chciałem zasygnalizować ten temat, bo…

Gdy już myślałem, że wszystkie niespodzianki za nami, okazało się, że… w panelu zarządzania usługą w Home.pl nie ma czegoś takiego jak CRON, czyli harmonogram zadań. Po prostu nie ma w panelu i tyle. Na szczęście okazało się, że o choć w panelu zarządzania usługą nie ma nic takiego, to coś w stylu CRONa zostało wdrożone, po prostu działa to na takiej zasadzie, że w odpowiednim miejscu na serwerze trzeba umieścić odpowiednio przygotowane pliki, a dalej działa (wdrożony) system.

Pliki (obsługiwane formaty/rozszerzenia: .php, .pl, .cgi, .py) związane z zadaniami umieszczamy w głównym katalogu WWW serwera, w moim przypadku jest to:

/home/nazwa_usługi/public_html

O tym jak często będzie uruchamiane dane zadania (umieszczone w pliku) decyduje… nazwa pliku. Załóżmy, że będzie to plik PHP (.php), który chcemy by był uruchamiany co 10 minut (można wybrać jeszcze co 5, 15, 20 i 30 minut). Wtedy nazwa takiego pliku (wraz z rozszerzeniem) będzie wyglądać tak:

cron-10min.php

Oczywiście niesie to za sobą pewne ograniczenia, jeśli chodzi o możliwe „czasy uruchomień” (można posiłkować się dodatkowymi warunkami w samych plikach). Ale by nie opierać się tylko na teorii – kilak przykładów:

  • cron-1020.php – plik (PHP) zostanie uruchomiony codziennie, o 10:20 (poruszamy się w 5-minutowych przedziałach, czyli 0, 5, 10, 15, … 45, 55)
  • cron-20min.py – plik (Python) zostanie uruchomiony co 20 (poruszamy się w wybranych 5-minutowych przedziałach, czyli 5, 10, 15, 20, 30)

Do tego możemy skorzystać z 4 zakresów powtarzalnych w dłuższych okresach, takich jak:

  • hourly – o każdej pełnej godzinie (x:00)
  • daily – codziennie o godzinie 1:15
  • weekly – w każdą sobotę o godzinie 1:30
  • monthly – każdy pierwszy dzień miesiąca o godzinie 1:45

Przynajmniej taką informację znalazłem w pomocy na stronie Home.pl (zachęcam zajrzeć) , gdy szukałem dokładnych godzin i dat dla tych powtórzeń.

Przykładowe nazwy plików:

cron-hourly.php
cron-daily.pl
cron-weekly.cgi
cron-monthly.py

W plikach (w ich zawartości) katalogi dla poszczególnych akcji (np. utworzenie pliku lub folderu, wywołanie jakiegoś skryptu PHP) liczymy od katalogu bazowego, którym jest z plikami CRONa. Tak więc jeśli chcemy uruchomić skrypt:

/home/nazwa_usługi/public_html/skrypty/skrypt.php

korzystamy ze ścieżki:

/skrypty/skrypt.php

Ze względu na wymagania związane z Mautic ja zdecydowałem się na plik CRONa w formacie PHP, gdyż dzięki temu mogę w relatywnie prosty sposób uruchomić polecenie systemowe (namiastka Basha):

<?php system( 'php7-cli /skrypty/skrypt.php'); ?>

Jeśli chcemy wywołać plik znajdujący się w innej lokalizacji niż nasz serwer w Home.pl, możemy skorzystać np. z polecenia cURL (ew. Wget):

<?php system('curl -k -s -f https://jakaś-domena/skrypty/skrypt.php'); ?>

W przypadku wspomnianego Mautica zawartość pliku może wyglądać np. tak:

<?php system('php7-cli /www/jakaś-domena/mautic/app/console mautic:segments:update'); ?>

Plik „console” faktycznie znajduje się w lokalizacji bezwzględnej:

/home/nazwa_usługi/public_html/www/jakaś-domena/mautic/app/console

Jest to tylko jedno polecenie z kilku wymaganych do prawidłowej pracy przez Mautica, ale… na resztę musicie poczekać do artykułu o tym narzędziu… ;-)

(!) Zgłoś błąd na stronie
Pomogłem? To może postawisz mi wirtualną kawę?
LUTy dla D-Cinelike (DJI Mini 3 Pro, DJI Avata, OSMO Pocket) od MiniFly
Wdrożenie Omnibusa w sklepie na WooCommerce
Jak (legalnie) latać dronem w Kategorii Otwartej
Patryk