PHP4-Forum
Forum | Befehle | MySQL | Beispiele | Newsletter | Suche | Home

Untermenü

Erweitertes
Reguläre Ausdr.
MIME-Mail
PHP und WAP
Crontab
HTTP-Header
Klassen, Objekte

Zu dieser Seite

Crontab
Crontab

PHP-Scripte haben einen großen Nachteil: Man muss sie per Browser aufrufen. Jedoch kann es vorkommen, dass ein Script regelmäßig ausgeführt werden soll, um z.B. einmal am Tag alle nicht mehr gültigen Produkte im eigenen Shop zu löschen, oder auch immer nachts überprüfen, ob sich in der Datenbank ein neuer Newsletter befindet, der gesendet werden soll. Programme, um andere Programme zeitbedingt zu starten liefert nahezu jedes Betriebssystem mit. Da im Internet die meisten Web-Server mit PHP auf einem Unix-Derivat laufen, möchten wir uns auf diesen Fall beschränken.

Das Unix-Programm, welches den Start anderer Programme steuert nennt sich "cron". Jeder Benutzer kann sich hierbei seine eigenen Programme zu der Crontab-Liste hinzufügen. Hierzu muss eine Text-Datei erstellt, die die entsprechenden Befehle enthällt. Eine entsprechende Zeile könnte z.B. so lauten:
0 * * * * /usr/local/bin/php $HOME/cron.php3 >> /dev/null 2>&1

Dieser Befehl startet das PHP-Script cron.php3 in dem User-Verzeichnis mit dem PHP-Interpreter (/usr/local/bin/php) zu jeder vollen Stunde. Jede Zeile in der Text-Datei kann nach diesem Format aufgebaut sein:
Minute Stunde Tag Monat Wochentag Befehl

Die einzelnen Parameter könne die folgenden Werte erhalten:
Minute    0 bis 59 oder *
Stunde    0 bis 24 oder *
Tag       1 bis 31 oder *
Monat     1 bis 12 bzw. jan bis dec oder *
Wochentag 0 (Sonntag) bis 6 (Samstag) bzw. mon bis sun oder *
Befehl    beliebiger Aufruf eines Programmes, wie er auch
          im Shell eingegeben werden kann.


Wird der Stern angegeben, wird das Programm zu jeder Stunde, bzw. an jedem Tag, Monat etc. ausgeführt. Als Befehl kann jedes ein belibiger Befehl stehen, der ein Programm startet. Die Ausgaben des Programmes werden per eMail an den Benutzer, der den Crontab eingerichtet hat gesendet. Um das Home-Verzeichnis zu anzugeben, kann auch die Variable $HOME (wie im obigen Beispiel) verwendet werden. Der folgende Befehl führt an jedem 1. des Monats das Programm "statistik" im Home-Verzeichnis aus:
0 0 1 * * $HOME/statistik

Anstatt einer Zahl bei der Zeit-Angabe können auch zwei durch ein Minus verbundene Zahlen angegeben werden. Dies bedeutet, dass ein Script von einem bestimmten Zeitpunkt bis zu einem anderen ausgeführt wird, und zwar zu jeder vollen Einheit erneut. Das folgende Beispiel führt an jedem Werktag (1-5 = Montag bis Freitag) einmal um 0:00 das Programm aus.
0 0 * * 1-5 $HOME/statistik

Ebenso können bestimmte Zeiten durch Kommas getrennt werden. So ist die obige Zeile mit der folgenden gleichbedeutend:
0 0 * * 1,2,3,4,5 $HOME/statistik

Falls ein Befehl z.B. alle 2 Stunden ausgeführt werde soll, kann folgende Zeile verwendet werden:
0 */2 * * * $HOME/statistik

Ausgabe


Wie oben schon erwähnt, werden die Ausgaben des Programmes per eMail an den Benutzer geschickt, der den Crontab eingerichtet hat. Ebenso können Sie aber alle Ausgaben in eine bestimmte Datei leiten, oder auch in das Unix-Jenseits /dev/null:
0 0 * * * $HOME/statistik >> /dev/null

Nun werden Sie nur bei Fehlern per eMail informiert. Wenn Sie auch diese nicht erhalten möchten, verwenden Sie folgende Zeile:
0 0 * * * $HOME/statistik >> /dev/null 2>&1

[HINWEIS:PHP-Scripte ausführen]

Ursprünglich wollten wir ja PHP-Scripte ausführen. Hierbei geschieht aber auch nichts anderes. Nur muss hier der PHP-Interpreter aufgerufen werden und als Parameter der Pfad des PHP-Scripts. Der PHP-Interpreter befindet sich meistens unter /usr/local/bin/php. Demnach muss der Crontab-Befehl so lauten:
0 * * * * /usr/local/bin/php $HOME/cron.php3
Dieser kann jetzt noch durch die obigen Konfigurationsmöglichkeiten ergänzt werden.

Starten von CRONTAB


Nun haben wir allerdings erst die Text-Datei mit den Befehlen für Crontab erstellt. Diese muss nun noch auf den Server hochgeladen werden (am besten ins Benutzerverzeichnis). Dann muss lediglich der folgende Befehl eingegeben werden (je nach Namen der Datei ändern):
crontab datei.txt

Um später einmal die automatische Ausführung zu deaktivieren, müssen Sie crontab -d eingeben und mit crontab -l können Sie Ihre aktuellen Einstellungen angucken.

Alternativ zur Text-Datei können Sie auch crontab -e eingeben und mit dem Unix-Editor vi die Crontabs bearbeiten
Dienstleistungen | Werbung | Impressum | Sitemap | Kontakt | Email © 1999 - 2013 | Last Update: 10.05.2004