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.

SaidbakR
quelle

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)

Mitch Dempsey
quelle
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
24

Sie benötigen die Umleitung nicht, sondern nur

* * * * * wget -qO /dev/null http://yoursite.com/tasks.php
Diego Torres Milano
quelle
1
Warum wird die Umleitung nicht benötigt?
Bradley Flood
1
-q|--quiet Turn off Wget's output.
Diego Torres Milano
1
Ihr Befehl verwendet auch die Umleitung, aber in einer anderen Form -qO / dev / null, nicht wahr?
Pavel Nazarov
Genau genommen ist keine Umleitung, da die E / A-Umleitung eine Shell-Sache ist
Diego Torres Milano
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.

Jerzy Drożdż
quelle
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.

mrraka
quelle
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
Abbas Arif
quelle
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.

VPS-Managed.com
quelle
-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
Abdul Alim
quelle
1

Sie können dies versuchen: -

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

Gehen
quelle
1

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

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

Vladimir Kornea
quelle