Używasz zadań CRON do odwiedzania adresu URL?


81

Mam aplikację internetową, która musi wykonywać powtarzające się zadania, Wysyłanie wiadomości i alertów, już używam strony skryptu do tych zadań, gdy jest ładowana w przeglądarce, tj. Http://example.com/tasks.php i dołączyłem za pomocą iframe na każdej stronie mojej aplikacji internetowej.

Teraz chcę to zmienić, aby używać zadań CRON, ponieważ pierwsze podejście może prowadzić do zacięcia, więc jak mogę zrobić zadanie CRON, które odwiedza http://example.com/tasks.php . Jednak nie chcę, aby to zadanie CRON tworzyło pliki wyjściowe, takie jak dzień. *!

Hostuję aplikację na współdzielonej usłudze hostingowej, która pozwala na pracę w CRON przez cPanel.

Odpowiedzi:


220
* * * * * wget -O - http://yoursite.com/tasks.php >/dev/null 2>&1

To powinno działać dla ciebie. Wystarczy mieć wgetskrypt, który ładuje stronę.

Użycie -O -oznacza, że ​​dane wyjściowe żądania internetowego zostaną wysłane do STDOUT (standardowe wyjście)

dodając >/dev/null, nakazujemy przekierowanie standardowego wyjścia do czarnej dziury. dodając 2>&1, instruujemy, aby STDERR (błędy) był również wysyłany do STDOUT, a zatem wszystkie dane wyjściowe zostaną wysłane do czarnej dziury. (więc załaduje witrynę, ale nigdzie nie zapisze pliku)


jakie są te wszystkie gwiazdki na początku
Ashkan Mobayen Khiabani

@AshkanMobayenKhiabani Są częścią składni cron: nncron.ru/help/EN/working/cron-format.htm
Mitch Dempsey

1
Jedyne rozwiązanie, które działało u mnie pod Raspbian Stretch Lite. Doskonały! : D
that-ben

4
Jedna uwaga: dobrym pomysłem jest zacytowanie adresu URL, jeśli zawiera zapytanie, może nie działać bez cytowania wszystkiego.
jackJoe


21

Możesz użyć tego, curlco jest w tym wątku

Dla leniwych:

*/5 * * * * curl --request GET 'http://exemple.com/path/check.php?param1=1'

Będzie to wykonywane co 5 minut.


10

Możesz także użyć lokalnego wiersza poleceń php-cli:

* * * * * php /local/root/path/to/tasks.php > /dev/null

Jest szybszy i zmniejsza obciążenie serwera internetowego.


7

używam tych poleceń

wget -q -O /dev/null "http://example.com/some/cron/job.php" > /dev/null 2>&1

Zadanie Cron:

* * * * * wget -q -O /dev/null "http://example.com/some/cron/job.php" > /dev/null 2>&1

1
Ten wymaga wyjaśnienia, ale działa bardzo dobrze. Zwłaszcza jeśli tak jak ja masz znak „&” w swoim adresie URL. Rozwiązaniem jest umieszczenie adresu URL w cudzysłowie. Dlaczego wstawiasz / dev / null przed adresem URL?
Gfra54

2
Prawdopodobnie jest to spóźniona odpowiedź, ale nigdy nie jest za późno. Powód jest taki: / dev / null jest specjalnym obiektem systemu plików, który odrzuca wszystko, co do niego jest zapisane. Przekierowanie do niego strumienia oznacza ukrycie wyjścia. Część 2> & 1 oznacza „przekierowanie zarówno strumienia wyjściowego, jak i strumieni błędów”.
Abbas Arif

Ok, więc oznacza to, że zawartość wget jest przekierowywana do / dev / null (więc jest w zasadzie usuwana i ignorowana)? Dzięki
Gfra54

1
Tak dane wyjściowe wysyłane do / dev / null są ignorowane.
Abbas Arif

2

możesz użyć tego dla adresu URL z parametrami:

lynx -dump "http://vps-managed.com/tasks.php?code=23456"

lynx jest domyślnie dostępny we wszystkich systemach.


-dump zrzuca zawartość strony do pliku. To prawdopodobnie niepożądany efekt uboczny.
Wicher Visser


1

Możesz spróbować tego: -

    wget -q -O - http://www.example.com/> / dev / null 2> & 1


1

* * * * * wget --quiet https://example.com/file --output-document=/dev/null

Uważam, że jest --quietjaśniejsze niż -qi --output-document=/dev/nulljaśniejsze niż-O - > /dev/null

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.