Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [inne][PHP]Automatyczne czytanie strony
sadistic_son
post 23.04.2024, 13:06:25
Post #1





Grupa: Zarejestrowani
Postów: 1 482
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Cześć.
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):
  1. $url = 'https://strona.ktora.ogladam.pl/podstrona/';
  2. // pliczek z zawartoscia strony
  3. $filename = 'page_content.txt';
  4.  
  5. // wyciaganie zawartosci strony
  6. function fetchPageContent($url) {
  7. $ch = curl_init($url);
  8. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  9. $content = curl_exec($ch);
  10. curl_close($ch);
  11. return $content;
  12. }
  13.  
  14. // porownanie poprzedniej wersji strony z obecna
  15. function compareContent($currentContent, $filename) {
  16. // jesli pliku nie ma - stworz go
  17. if (!file_exists($filename)) {
  18. file_put_contents($filename, $currentContent);
  19. return "Nie było treści. Utworzono.";
  20. } else {
  21. // porownaj
  22. $previousContent = file_get_contents($filename);
  23. if ($currentContent === $previousContent) {
  24. return "Brak zmian.";
  25. } else {
  26. // zaktualizuj zawartosc pliku ze strona
  27. file_put_contents($filename, $currentContent);
  28. // wysylanie mejla jesli wykryto zmiany
  29. $from = "ja@ja.pl";
  30. $to = "ty@ty.pl";
  31. $subject = "Wykryto zmiany!";
  32. $message = "Na stronie wykryto zmiany w stounku do poprzedniego stanu.";
  33. $headers = "From: $from";
  34. mail($to, $subject, $message, $headers);
  35. return "WYKRYTO ZMIANY!";
  36. }
  37. }
  38. }
  39.  
  40.  
  41. $currentContent = fetchPageContent($url);
  42.  
  43. $result = compareContent($currentContent, $filename);
  44.  
  45. echo $result;

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

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:
  1. $from = "test@test.pl";
  2. $to = "sadistic@son.pl";
  3. $subject = "TEST";
  4. $message = "to jest tylko test mejla co minutę";
  5. $headers = "From: $from";
  6. mail($to, $subject, $message, $headers);
Oraz ustawiłem drugie zadanie CRONa, co 2 minuty wywołanie skryptu test.php:
Kod
*/2 * * * *
/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 wink.gif


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.

Ten post edytował sadistic_son 23.04.2024, 13:07:47


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
nospor
post 23.04.2024, 13:11:20
Post #2





Grupa: Moderatorzy
Postów: 36 459
Pomógł: 6297
Dołączył: 27.12.2004




zacznij od tego by bledow nie wywalac w kosmos tylko do pliku, to moze cos ciekawego sie dowiesz

no i czemu twoj zapis cron wyglada tak
*/30 * * * *

/usr/local/bin/php80 /home/mojUser/domains/moja.domena.pl/public_html/ch_change/index.php >/dev/null 2>&1

a nie tak
*/30 * * * * /usr/local/bin/php80 /home/mojUser/domains/moja.domena.pl/public_html/ch_change/index.php >/dev/null 2>&1
?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sadistic_son
post 23.04.2024, 13:34:18
Post #3





Grupa: Zarejestrowani
Postów: 1 482
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Nie mam dostępu do konsoli, tylko w formularzu to wpisuję - oddzielny input dla minut, godzin, itd. No dobra, czyli zakładam, że żeby zobaczyć błędy z CRONa to muszę wywalić końcówkę, tj to: ">/dev/null 2>&1" tak?

EDIT:
eeee, jako oudput z CRONa (po usunięciu końcówki ze ścieżki) dostałem zawartość htmla... :| Nie wiem co o tym myśleć. Ów skrypt ma też zwiększać counter w pliku, czego teraz po teoretycznym wystartowaniu CRONa nie zrobił.

Ten post edytował sadistic_son 23.04.2024, 13:35:43


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
nospor
post 23.04.2024, 13:51:45
Post #4





Grupa: Moderatorzy
Postów: 36 459
Pomógł: 6297
Dołączył: 27.12.2004




no widzisz, czyli cron sie wykonuje, tylko skrypt daje ciala

prawdopodbnie o to
$content = curl_exec($ch);
zamiast do zmiennej to pluje ci do ekran

Moze to pomoze
https://stackoverflow.com/questions/1226992...-hosting-server


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sadistic_son
post 23.04.2024, 14:58:50
Post #5





Grupa: Zarejestrowani
Postów: 1 482
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Niestety, kiedy zmieniam true na false, tak jak w temacie na stackoverflow to w ogóle dzieją się cuda wianki - wyświetla monitorowaną stronę a na jej górze dodaje mój licznik. Porównanie zawsze zwraca false, bo plik z zapisaną wcześniejszą wersją strony nagle zawiera jedynie '1'.

A da się inaczej to zrobić niż curlem?

Ten post edytował sadistic_son 23.04.2024, 15:02:08


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
nospor
post 23.04.2024, 15:02:47
Post #6





Grupa: Moderatorzy
Postów: 36 459
Pomógł: 6297
Dołączył: 27.12.2004




tam nei tylko bylo o true vs false. Spradz czy nie masz redirectow jakis, tam bylo tez mowa o innych wlasciwosciach do sprawdzenia, sprawdz tez co dokladnie zwraca ten htm, co to za tresc jest.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sadistic_son
post 23.04.2024, 15:19:31
Post #7





Grupa: Zarejestrowani
Postów: 1 482
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Ale to można zrobić zwykłym file_get_contents podając url strony i nie trzeba się z curlem użerać... To zadziała tak samo?


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
nospor
post 23.04.2024, 15:36:55
Post #8





Grupa: Moderatorzy
Postów: 36 459
Pomógł: 6297
Dołączył: 27.12.2004




sprobuj


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sadistic_son
post 23.04.2024, 16:06:16
Post #9





Grupa: Zarejestrowani
Postów: 1 482
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


No działa - w pliku jest zawartość strony. Wygląda tak samo jak zropbione curl'em.

To teraz czemu to nadal nie wykonuje się poprawnie przez CRON? Czy wywołując skrypt CRONem skrypt nie może zawierać żadnego echo ? Odpalony manualnie działa bez zarzutu.

Ten post edytował sadistic_son 23.04.2024, 16:13:03


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
nospor
post 23.04.2024, 16:14:13
Post #10





Grupa: Moderatorzy
Postów: 36 459
Pomógł: 6297
Dołączył: 27.12.2004




ale patrzyles jak prosilem co zwraca HTML po odpaleniu przez CRON?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sadistic_son
post 23.04.2024, 16:18:23
Post #11





Grupa: Zarejestrowani
Postów: 1 482
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Rozumiem, że jedyną metodą którą mogę to sprawdzić to ustawienie ścieżki bez ' >/dev/null 2>&1' , tak? Na moim hostingu działa to tak, że output z tego cron tasku dostanę na mejla. Czekam na tego mejla obecnie.


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
nospor
post 23.04.2024, 16:43:04
Post #12





Grupa: Moderatorzy
Postów: 36 459
Pomógł: 6297
Dołączył: 27.12.2004




mogles tez zapisac to do pliku, jak mowilem wczesniej

>/tmp/log.txt


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
sadistic_son
post 23.04.2024, 20:14:04
Post #13





Grupa: Zarejestrowani
Postów: 1 482
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Muszę sprawdzić czy mam tam dostęp z poziomu managera plików. Jutro sprawdzę. Thx.

A co oznacza ten zapis? 2>&1?

Ten post edytował sadistic_son 23.04.2024, 20:15:11


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
Tomplus
post 24.04.2024, 07:31:59
Post #14





Grupa: Zarejestrowani
Postów: 1 840
Pomógł: 226
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


https://stackoverflow.com/questions/818255/what-does-21-mean
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 3.05.2024 - 22:06