Häufig gestellte Frage

Wie kann ich einen CronJob anlegen?

Zuletzt aktualisiert vor 5 Jahren

Nachdem die Hilfe beim Einrichten eines cronJobs bei osTIcket von Seiten der Entwickler eher dürftig ist, will ich hier mal eine Übersicht geben, wie ein cronJob eingerichtet werden kann.

Es gibt im Grunde 3 Möglichkeiten, den cronJob ausführen zu lassen...

Möglichkeit 1

per Autocron
das ist schnell eingerichtet.
Gehen Sie dazu im Admin-Bereich auf Einstellungen->eMail-Adressen...

dort aktivieren Sie bitte die Option "Aktiviere POP/IMAP Abruf", wenn Tickets auch per Mail eingehen sollen, und
die Option "Abruf per auto-cron aktivieren", wenn die cron-Aufgaben per auto-cron erledigt werden sollen.

Hinweis:
das ist die schlechteste Variante und sollte nur verwendet werden, wenn kein cronJob beim Server eingerichtet werden kann, da die Aufgaben möglicherweise sehr unregelmäßig abgearbeitet werden und dann auch noch zu einer Zeit erledigt werden, wenn man als Benutzer selbst am System arbeiten will und keine langen Ladezeiten haben will....



Möglichkeit 2

per cronJob auf dem lokalen Server (lokaler Zugriff auf das Skript)

loggen Sie sich auf Ihrem Server bzw. Hosting-Paket ein.
gehen Sie nun zur Eingabemaske Ihres cronJobs. Häufig heißt der Menüpunkt "cronJob einrichten" oder "geplante Aufgaben".
In Plesk z.B. befinden sich die cronJobs unter Server->Tools & Resourcen->Geplante Aufgaben

nachdem Sie einen Systembenutzer ausgewählt haben, werden alle cronJobs dieses Benutzers angezeigt.
Über "neue Aufgabe Hinzufügen" öffnet sich das Fenster, in dem Sie den cronJob einrichten können.

Grundlegend zur Syntax der cron-table muss ein cron-Job folgendes Format haben:

-> Zeitangabe benutzer Befehl
genauer gesagt
Minute Stunde Tag_des_Monats Monat Wochentag Benutzer Befehl
der Befehl setzt sich bei einem php-Skript zusammen aus: Interpreter und Pfad_zur_Datei

Nun zurück zur Eingabemaske...
Am Anfang müssen Sie angeben wie oft der cronJob ausgeführt werden muss...

mögliche Beispiele: (UNIX Crontab-Format)
für alle halbe Stunde: 1,30 -> heißt, ausführen in Minute 1 und 30...
alle 5 Minuten: */5
jede Minute: * (Kurzform) oder */1 (Langform)
einen Bereich angeben z.B. wenn der cronJob nur Werktags von Montag bis Freitags ausgeführt werden soll: 1-5

nun zum Befehl der aufgerufen werden muss...

der Pfad zum PHP-Interpreter kann bei jedem Hostingpaket anders sein, hat aber meist einen der folgenden Pfade:
/usr/local/php
/usr/local/php5
/usr/bin/php
/usr/bin/php5
meist reicht auch nur php

der lokale Pfad zur Datei:
/pfad/zur/osticket-Installation/api/cron.php
z.B.: /var/www/my.domain.com/httpdoc/api/cron.php oder so ähnlich, je nach Hosting-Anbieter

Somit ergibt sich folgender befehl:
Beispiel:
php /var/www/my.domain.com/httpdoc/api/cron.php

Nach dem Speichern sollte der cronJob seine Arbeit tun.

Hinweis für Windows:
Unter Windows werden cronJobs mit dem Task Schelduler erledigt.
Bei Win10 auf Start-Button klicken und anschließend "Aufgabenplanung" eintippen.
Nun die App Aufgabenplanung öffnen und unter Aktion neue Aufgabe erstellen.
Im Reiter Aktionen neue Aktion hinzufügen.
Aktion = Programm starten, Programm/Skript = C:\Pfad\zu\php.exe -f C:\Pfad\zu\\my_script.php (z.B. C:\Xampp\php\php.exe -f C:\Xampp\htdocs\osticket\api\cron.php)
Im Reiter Trigger einen neuen Trigger erstellen (Zeitplan, wann das Skript ausgeführt werden soll)
Einstellungen Täglich - Wiederholung alle 1 Tage
Erweiterte Einstellungen - Haken bei Wiederholen jede: 5 Minuten



Möglichkeit 3

per cronJob auf einem remote Server (kein lokaler Zugriff auf das Skript)

Die Zeiteinstellungen sind wie bei einem lokalen Aufruf, nur der Befehl ist ein anderer.
Zusätzlich benötigen Sie die Datei rcron.php
(sollte sie nicht im ./api/-Verzeichnis sein finden Sie sie im Download-Paket unter ./scripte. Sie ist auch dieser Hilfeseite angehängt...)

Der cronJob lautet auch hier:
Zeitangabe Benutzer Befehl

Da die Zeitangabe die gleiche ist wie bei einem lokalen Aufruf, möchte ich hier nicht noch einmal darauf eingehen.

Anders als bei einem lokalen Aufruf benötigen Sie für einen remote-Aufruf einen API-Schlüssel.

Gehen Sie dazu im Admin-Bereich unter Verwalten->API-Schlüssel->API-Schlüssel hinzufügen und legen einen neuen API-Schlüssel an.
Die IP-Adresse muss dabei die IP-Adresse des Servers sein, auf dem die Datei rcron.php läuft und darf sich nicht ändern!

Öffnen Sie nun die rcron.php und geben Sie die URL zu osticket und den API-Schlüssel ein.
Das geschieht gleich zu Anfang im $config-Array.
Die URL setzt sich wie folgt zusammen:

Pfad zu osTicket + /api/tasks/cron
d.H. wenn der Pfad http://www.domain.de/support lautet, ist die URL http://www.domain.de/support/api/tasks/cron
bei key fügen Sie einfach den neu generierten API-Schlüssel ein.

das war es. speichern und hochladen.

nun zum eigentlichen CronJob:
Der Befehl des CronJobs ist hierbei denkbar einfach. Er lautet wie folgt:

http://Pfad_zur_rcron/rcron.php

Nun sollte der CronJob funktionieren.


Hinweis:
Um euch die Arbeit zu erleichtern, habe ich ein kleines Skript geschrieben, welches den cronJob-Befehl erzeugt und die IP des aktuellen Servers ausliest.
Ladet das angehängte Skript cronJob-Befehl.php in das root-Verzeichnis eurer Installation und ruft es über den Browser auf.
Anschließend erscheinen 3 Varianten des Befehls für den lokalen Aufruf und der Befehl für den remote Aufruf mit der IP des aktuellen Servers die bei euch funktionieren sollten....
Nicht vergessen: löscht anschließend die Datei wieder, da sonst jeder die Datei aufrufen kann!!!

Bitte warten!

Bitte warten... es dauert eine Sekunde!