Wie kann ich über einen Cronjob eine PHP-Datei ausführen?

Aus Domain-Offensive - Wiki
Wechseln zu: Navigation, Suche

Wie kann ich über einen Cronjob eine PHP-Datei ausführen? --ER--

Definition Cronjob
Cron (Ableitung von Chronos = Zeit): Im Hintergrund werden in regelmäßigen Abständen Befehle/Skripte aufgerufen und ausgeführt. Dies können Anwendungen wie bspw. das automatische Versenden von E-Mails, das Abholen von Log-Dateien, die Erstellung von Backsups oder die Optimierung einer Datenbank sein. In Tabellen (sog. Crontabs) sind diese Befehle gespeichert und werden von dort aus ausgeführt.
Einrichtung von Cronjobs
Es können nahezu alle Scripte mit einem Cronjob ausgeführt werden. Dazu gehören z.B. Perl, PHP und Python.
Allerdings können Scriptsprachen die fest im Webserver sind (z.B. SSI) nicht direkt per Cronjob aufgerufen werden.
Beispiel für ein Cronjob per PHP
Für ein PHP-Script müsste die Zeile beispielsweise wie folgt lauten:
*/5 * * * * /usr/local/php5/bin/php -f ~/html/ihrphpscript.php
Erklärung für das genannte Beispiel
- */5 steht für einen Abruf alle 5 Minuten
- die vier * dahinter für Stunde, Tag und Monat (Jede Stunde an jedem Tag in jeder Monat).
- Suchen Sie im Homeverzeichnis (das ~ Tilde Zeichen steht immer für Ihr Homeverzeichnis) im Ordner "html" nach dem Script "ihrphpscript.php" und führen es aus indem Sie es mit PHP aufrufen.

Beispieleintrag im Confixx auf webspaceXX.do.de

Minute : */5
Stunde : *
Tag : *
Monat : *
Wochentag : *

Befehl mit Rückgabe per E-Mail : wget "http://www.ihredomain.xy/pfad-zum-cronjobverzeichnis/script.php"
Befehl ohne Rückgabe : wget "http://www.ihredomain.xy/pfad-zum-cronjobverzeichnis/script.php" -O /dev/null &>/dev/null

Cronjob beispiel wget.png




Beispieleintrag im Confixx auf allen serverXX.configcenter.info

Minute : */5
Stunde : *
Tag : *
Monate : *
Wochentag : *
Befehl : /usr/local/php5/bin/php -f ~/html/testmail.php


Hinweis zur Ausführung mit PHP GET-Parametern

Über die Kommandozeile können einem PHP-Script leider keine $_GET Parameter übergeben werden.
Falsch wäre beispielsweise dieser Befehl:
/usr/local/php5/bin/php -f ~/html/bild.php?xyz=3
In diesem Fall müssten Sie das Script wie folgt aufrufen:
/usr/local/php5/bin/php -f ~/html/bild.php 3
Auf den Wert "3" können Sie dann anstatt mit $_GET['xyz'] mit dem Befehl $_SERVER['argv'][1] zugreifen.
Mehr Sicherheit bei Cronjobs
Um auch bei einem Cronjob die größtmögliche Sicherheit zu garantieren, empfehlen wir Ihnen das Cronscript-Verzeichnis mit einem Passwortschutz zu versehen und den Cronjobbefehl so zu verändern, das er weiterhin in das Verzeichnis zugreifen kann.
Wir erklären Ihnen das anhand folgenden Beispieles:
Das zu schützende Verzeichnis lautet: "http://www.ihredomain.xy/pfad-zum-cronjobverzeichnis/" und wird einem Kennwortschutz versehen. Rufen Sie das Verzeichnis nun im Browser auf, erscheint eine Passwortabfrage.
Diese ist nur passierbar, wenn der richtige Benutzername und das richtige Passwort eingegeben werden.
Damit der Cronjob auf das Verzeichnis zugreifen kann, muss er wie in folgenden Beispiel angepasst werden:
muss verändert werden in:
wget --user=Benutzer --password=Passwort "http://www.ihredomain.xy/pfad-zum-cronjobverzeichnis/script.php"

Cronjob beispiel wget mit passwortschutz.png

zurück

Navigation
Meine Werkzeuge