Verwenden Sie CRON-Jobs, um die URL zu besuchen?


80

Ich habe eine Webanwendung, die wiederholte Aufgaben ausführen muss. Senden von Nachrichten und Warnungen. Ich verwende bereits eine Skriptseite, um diese Aufgaben zu erledigen, wenn sie in den Browser geladen wird, dh http://example.com/tasks.php und ich eingeschlossen es mittels iframe auf jeder Seite meiner Webanwendung.

Jetzt will ich diese Cronjobs verwenden ändern , da der erste Ansatz kann , führt zu Stau Leistung, So Wie könnte ich einen cron - Job , dass Besuche machen http://example.com/tasks.php . Ich möchte jedoch nicht, dass dieser CRON-Job Ausgabedateien wie day erstellt. *!

Ich hoste die Anwendung auf einem Shared Hosting Service, der CRON-Jobs über cPanel ermöglicht.

Antworten:


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

Das sollte für dich funktionieren. Haben Sie einfach ein wgetSkript, das die Seite lädt.

Verwenden -O -bedeutet, dass die Ausgabe der Webanforderung an STDOUT (Standardausgabe) gesendet wird.

Durch Hinzufügen weisen >/dev/nullwir die Standardausgabe an, zu einem Schwarzen Loch umzuleiten. Durch Hinzufügen 2>&1weisen wir STDERR (Fehler) an, auch an STDOUT gesendet zu werden, und somit werden alle Ausgaben an ein Schwarzes Loch gesendet. (so wird die Website geladen, aber niemals irgendwo eine Datei geschrieben)


Was sind all diese Sternchen am Anfang
Ashkan Mobayen Khiabani

@AshkanMobayenKhiabani Sie sind Teil der Cron-Syntax: nncron.ru/help/EN/working/cron-format.htm
Mitch Dempsey

1
Die einzige Lösung, die unter Raspbian Stretch Lite für mich funktioniert hat. Perfekt! : D
that-ben

3
Ein Hinweis: Es ist eine gute Idee, die URL in Anführungszeichen zu setzen. Wenn sie eine Abfrage enthält, funktioniert sie möglicherweise nicht, ohne dass alles in Anführungszeichen steht.
JackJoe


20

Sie können verwenden, curlwie es in diesem Thread ist

Für die Faulen:

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

Dies wird alle 5 Minuten ausgeführt.


10

Sie können auch die lokale Befehlszeile php-cli verwenden:

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

Es ist schneller und verringert die Belastung Ihres Webservers.


7

Ich benutze diese Befehle

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

Cron Aufgabe:

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

1
Dieser muss erklärt werden, funktioniert aber sehr gut. Vor allem, wenn Ihre URL wie ich ein kaufmännisches Und enthält. Das Einfügen der URL in Anführungszeichen ist eine Lösung. Warum puttest du / dev / null vor die URL?
Gfra54

2
Dies ist wahrscheinlich eine späte Antwort, aber es ist nie zu spät. Grund ist: / dev / null ist ein spezielles Dateisystemobjekt, das alles, was darin geschrieben ist, wegwirft. Das Umleiten eines Streams bedeutet, dass eine Ausgabe ausgeblendet wird. Der Teil 2> & 1 bedeutet "sowohl den Ausgabe- als auch den Fehlerstrom umleiten".
Abbas Arif

Ok, es bedeutet, dass der Inhalt von wget nach / dev / null umgeleitet wird (also wird er im Grunde genommen gelöscht und ignoriert)? Vielen Dank
Gfra54

1
Ja Ausgabe an / dev / null wird ignoriert.
Abbas Arif

2

Sie können dies für URL mit Parametern verwenden:

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

lynx ist standardmäßig auf allen Systemen verfügbar.


-dump speichert den Inhalt der Seite in der Datei. Das ist eine möglicherweise unerwünschte Nebenwirkung.
Wicher Visser

2

Sie können diesen Befehl verwenden:

links https://www.honeymovies.com

1

Sie können dies versuchen: -

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


1

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

Ich finde --quietklarer als -qund --output-document=/dev/nullklarer als-O - > /dev/null

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.