Potrzebuję sprawdzać czy na danej stronie (na obcym serwerze) coś się zmieniło. A więc zapisuję sobie treść danej strony w pliku (jeśli ten plik nie istnieje) a następnie porównuję to co w pliku (zapisanew wcześniej) do tego jak strona wygląda obecnie. Jeśli są różnice wysyłam mejla. To realizuję tym kodem (fragment):
$url = 'https://strona.ktora.ogladam.pl/podstrona/'; // pliczek z zawartoscia strony $filename = 'page_content.txt'; // wyciaganie zawartosci strony function fetchPageContent($url) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $content = curl_exec($ch); curl_close($ch); return $content; } // porownanie poprzedniej wersji strony z obecna function compareContent($currentContent, $filename) { // jesli pliku nie ma - stworz go file_put_contents($filename, $currentContent); return "Nie było treści. Utworzono."; } else { // porownaj if ($currentContent === $previousContent) { return "Brak zmian."; } else { // zaktualizuj zawartosc pliku ze strona file_put_contents($filename, $currentContent); // wysylanie mejla jesli wykryto zmiany $from = "ja@ja.pl"; $to = "ty@ty.pl"; $subject = "Wykryto zmiany!"; $message = "Na stronie wykryto zmiany w stounku do poprzedniego stanu."; $headers = "From: $from"; return "WYKRYTO ZMIANY!"; } } } $currentContent = fetchPageContent($url); $result = compareContent($currentContent, $filename);
I to działa jak należy. ALE ALE... ja chcę żeby to robiło się samo co 30 minut, tak więc... CRON. I w CRONie mam ustawione tak:
Kod
*/30 * * * *
/usr/local/bin/php80 /home/mojUser/domains/moja.domena.pl/public_html/ch_change/index.php >/dev/null 2>&1
/usr/local/bin/php80 /home/mojUser/domains/moja.domena.pl/public_html/ch_change/index.php >/dev/null 2>&1
Niestety skrypt ten nie wywołuje się sam. No to sprawdzamy czy CRONa poprawnie ustawiłem.
W tym samym katalogu zrobiłem plik test.php:
Oraz ustawiłem drugie zadanie CRONa, co 2 minuty wywołanie skryptu test.php:
$from = "test@test.pl"; $to = "sadistic@son.pl"; $subject = "TEST"; $message = "to jest tylko test mejla co minutę"; $headers = "From: $from";
Kod
*/2 * * * *
/usr/local/bin/php80 /home/mojUser/domains/moja.domena.pl/public_html/ch_change/test.php >/dev/null 2>&1
/usr/local/bin/php80 /home/mojUser/domains/moja.domena.pl/public_html/ch_change/test.php >/dev/null 2>&1
Działa jak złoto. Dodam, że jeśli ręcznie odpalę skrypt index.php który mnie interesuje to też działa, wygląda na to jakby nie wykonywał się kiedy CRON go odpala.
Kombinowałem też z odświeżaniem strony co 10 minut, ale Chrome jak jest zminimalizowany w tle to najwidoczniej przestaje odliczać te 10 minut bo się strona nie odświeża.
PS. User name, ścieżki, emaile pozmieniałem oczywiście

Pomóżcie. Co robię nie tak:
1) Dlaczego CRON wykonuje jeden (prostszy) skrypt test.php a drugiego index.php w tym samym katalogu już nie?
2) Dlaczego odświeżanie strony co 10 minut nie działa w Chromie działającym w tle?
Dzięki.