Cronjobs: Unterschied zwischen den Versionen

Aus sourceDESK Wiki
Wechseln zu: Navigation, Suche
(Die Seite wurde neu angelegt: „Die Cronjobs sind dafür da, zu bestimmten Zeiten bzw. in einem bestimmten Intervall bestimmte Aufgaben auszuführen. == Verwaltung der Cronjobs == Sie finden…“)
 
 
(8 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 5: Zeile 5:
  
 
== Erklärung der Cronjobs ==
 
== Erklärung der Cronjobs ==
 +
'''Abrechnungen'''
 +
 +
Dieser Cronjob erstellt Rechnungen bei Fälligkeit aktiver [[Abrechnungen]].
 +
 
'''Backups'''
 
'''Backups'''
  
 
Dieser Cronjob nimmt [[System-Backups]] vor.
 
Dieser Cronjob nimmt [[System-Backups]] vor.
 +
 +
'''Domain-Änderungen'''
 +
 +
Dieser Cronjob wendet offene Änderungen an [[Domains]] an.
 +
 +
'''Domain-Synchronisierung'''
 +
 +
Dieser Cronjob synchronisiert im System befindliche [[Domains]] mit den Daten beim Registrar.
 +
 +
'''Domain-Verlängerungen'''
 +
 +
Dieser Cronjob kümmert sich um Verlängerungen und Kündigungen von [[Domains]] und warnt den Kunden vor anstehenden Verlängerungen bzw. dem Ablauf seiner Domain.
  
 
'''E-Mailwarteschlange'''
 
'''E-Mailwarteschlange'''
Zeile 16: Zeile 32:
  
 
Dieser Cronjob versendet auf Wunsch Glückwünsche und einen Gutschein, wenn einer Ihrer Kunden [[Geburtstag]] hat.
 
Dieser Cronjob versendet auf Wunsch Glückwünsche und einen Gutschein, wenn einer Ihrer Kunden [[Geburtstag]] hat.
 +
 +
'''IP-Lokalisierung'''
 +
 +
Dieser Cronjob versucht, IP-Adressen von Kunden zu lokalisieren. Das ermöglicht es Ihnen, direkt in der Administration zu sehen, woher ein Besucher kommt und dient der Betrugsprävention.
 +
 +
'''Mahnungen'''
 +
 +
Dieser Cronjob versendet Mahnungen für überfällige Rechnungen, siehe [[Mahnsystem]].
 +
 +
'''Produkt-Einrichtungen'''
 +
 +
Dieser Cronjob richtet vom Kunden bestellte [[Produkte]] im Hintergrund ein.
 +
 +
'''Proxy-Adressen aktualisieren'''
 +
 +
Dieser Cronjob ruft eine Liste von bekannten Proxy-IP-Adressen ab und speichert diese zwischen. Das ermöglicht es sourceDESK, Proxy-Nutzern bestimmte Funktionen der Webseite zu sperren, um Betrug vorzubeugen.
 +
 +
'''Server-Monitoring'''
 +
 +
Dieser Cronjob überwacht die Server im [[Monitoring]].
  
 
'''System-Status'''
 
'''System-Status'''
  
 
Dieser Cronjob prüft das System auf Fehler, wie zum Beispiel nicht existente Dateien.
 
Dieser Cronjob prüft das System auf Fehler, wie zum Beispiel nicht existente Dateien.
 +
 +
'''Ticket-Import (POP)'''
 +
 +
Dieser Cronjob importiert neue E-Mails in das [[Support-System]]. Dafür ist das '''mailparse-Modul''' für PHP zwingend erforderlich.
  
 
'''Überweisungs-Import'''
 
'''Überweisungs-Import'''
Zeile 29: Zeile 69:
 
Dieser Cronjob aktualisiert die Kurse der [[Währungen]] automatisch, wenn dies aktiviert ist und die Währungs-Codes gültig sind.
 
Dieser Cronjob aktualisiert die Kurse der [[Währungen]] automatisch, wenn dies aktiviert ist und die Währungs-Codes gültig sind.
  
== Einrichtung der Cronjobs ==
+
== Cronjob-Einrichtung: URL ==
Sie sollten alle angezeigten Cronjobs in angegebenen Intervall einrichten, zum Beispiel über ''crontab'' oder über Ihr Verwaltungsinterface (Linux-Tipp: ''wget --spider "URL"''). Über die Administration deaktivierte Cronjobs lassen sich nicht mehr aufrufen, sollten aber trotzdem als Cronjob im Crontab eingetragen sein, damit sie nach der erneuten Aktivierung wieder laufen.
+
Die einfachste Variante der Cronjob-Ausführung ist der Aufruf über die Cronjob-URL. Diese finden Sie unter "Einstellungen > System-Einstellungen > Cronjobs", dort erhalten Sie auch das entsprechende Ausführungs-Intervall.
 +
 
 +
Die URL ist unter dem Webseite-Icon auffindbar, diese muss als Cronjob eingerichtet werden.
 +
 
 +
== Cronjob-Einrichtung: PHP-CLI ==
 +
Eine weitere Variante zur Ausführung der Cronjobs ist der Aufruf über die PHP-Kommandozeile. Dies ist die bevorzugte Variante. Unter "Einstellungen > System-Einstellungen > Cronjobs" finden Sie die verfügbaren Cronjobs samt Ausführungs-Intervalle. Am Ende einer jeden Zeile der Tabelle finden Sie die Cronjob-URL. In dieser befindet sich der Parameter "job", dieser enthält den Cronjob-Key (etwa ''recurring''). Den Email-Cronjob würden Sie wie folgt einrichten (crontab-Stil):
 +
 
 +
<source lang="bash">
 +
* * * * * /path/to/php /path/to/sourcedesk/index.php cron queue
 +
</source>
 +
 
 +
== Cronjob-Einrichtung: Daemon ==
 +
Seit Version 1.1.1 reicht es aus, einen Daemon einzurichten, der die Cronjobs automatisch ausführt, wenn diese fällig sind. Alternativ können die Cronjobs auch weiterhin einzeln aufgerufen werden. Der Daemon erfordert das PHP-Modul ''pthreads''. Der Aufruf erfolgt in einer Shell mit:
 +
 
 +
<source lang="bash">
 +
nohup php /var/www/sourceDESK/index.php cron _all &
 +
</source>
 +
 
 +
Hierbei ist der Pfad zu sourceDESK anzupassen, eventuell muss auch der Pfad für die PHP-Binary geändert werden. Eine Passwort-Authentifizierung ist nicht erforderlich. Der Daemon kann beispielsweise mit ''systemd'' verwaltet werden. Hierzu kann eine Datei ''/etc/systemd/system/sourcedesk.service'' mit folgendem Inhalt angelegt werden:
 +
 
 +
<source lang="vim">
 +
[Unit]
 +
Description=sourceDESK Cronjob
 +
Requires=mysqld.service
 +
After=mysqld.service
 +
 
 +
[Service]
 +
User=root
 +
Type=simple
 +
TimeoutSec=0
 +
PIDFile=/var/run/sourcedesk.pid
 +
ExecStart=php -f /var/www/sourceDESK/index.php cron _all> /dev/null 2>/dev/null
 +
KillMode=process
 +
 
 +
Restart=on-failure
 +
RestartSec=30s
 +
 
 +
[Install]
 +
WantedBy=default.target
 +
</source>
 +
 
 +
Die Datei - und jegliche Änderungen - müssen mit ''systemctl daemon-reload'' im System bekannt gemacht werden.
 +
 
 +
Der Dienst kann dann mit ''systemctl start sourcedesk'' gestartet werden. Um ihn beim Booten zu starten, muss ''systemctl enable sourcedesk'' ausgeführt werden.
  
 
== Intervall ==
 
== Intervall ==
Wie bereits erwähnt wird das Intervall bei den Cronjobs angezeigt. Dieses Intervall sollte nicht unterschritten werden, es gibt auch nur eine 10-prozentige Toleranz. Das heißt, dass ein Cronjob, der alle 60 Minuten laufen soll, zwar auch alle 54 Minuten aufgerufen werden kann, ein geringeres Intervall wird aber nicht möglich sein - der Cronlauf wird direkt abgebrochen.
+
Wie bereits erwähnt wird das Intervall bei den Cronjobs angezeigt. Dieses Intervall sollte nicht unterschritten werden, es gibt auch nur eine 10-prozentige Toleranz. Das bedeutet, dass ein Cronjob, der alle 60 Minuten laufen soll, zwar auch alle 54 Minuten aufgerufen werden kann, ein geringeres Intervall wird aber nicht möglich sein - der Cronlauf wird direkt abgebrochen.
  
 
== Für Entwickler ==
 
== Für Entwickler ==
Die Cronjobs finden sich in der Datenbanktabelle ''cronjobs'' (eventuell mit Präfix). Dort können Sie neue Cronjobs hinzufügen oder das Intervall verändern - bitte nur, wenn Sie wissen was Sie tun. Jeder Cronjob hat dort unter anderem ein Merkmal ''key''. Das ist der GET-Parameter ''job'' beim Aufruf eines Cronjobs. Außerdem muss eine Datei ''key''.php im Verzeichnis ''controller/crons'' existieren.
+
Die Cronjobs finden sich in der Datenbanktabelle ''cronjobs'' (eventuell mit Präfix). Dort können Sie neue Cronjobs hinzufügen oder das Intervall verändern - tun Sie dies aber bitte nur, wenn Sie wissen was Sie tun. Jeder Cronjob hat dort unter anderem ein Merkmal ''key''. Das ist der GET-Parameter ''job'' beim Aufruf eines Cronjobs. Außerdem muss eine Datei ''key''.php im Verzeichnis ''controller/crons'' existieren. Die einfachere Variante dürfte aber sein, weitere Aktionen im Anschluss an einen bestehenden Cronjob durchzuführen, hierzu können Sie den [[Hook]] [[Hook:Cronjob]] verwenden.

Aktuelle Version vom 26. März 2020, 20:53 Uhr

Die Cronjobs sind dafür da, zu bestimmten Zeiten bzw. in einem bestimmten Intervall bestimmte Aufgaben auszuführen.

Verwaltung der Cronjobs

Sie finden die Cronjob-Verwaltung unter "Einstellungen" > "Systemeinstellungen" > "Cronjobs". Dort können Sie einzelne Cronjobs aktivieren bzw. deaktivieren und ein Passwort setzen, falls dies zum Schutz des Cronjob-Aufrufes gewünscht ist (wird empfohlen). Außerdem wird Ihnen angezeigt, wann der Cronjob das letzte Mal aufgerufen wurde, welches Intervall für den Cronjob-Aufruf empfohlen wird und wie die URL lautet (letztes Icon).

Erklärung der Cronjobs

Abrechnungen

Dieser Cronjob erstellt Rechnungen bei Fälligkeit aktiver Abrechnungen.

Backups

Dieser Cronjob nimmt System-Backups vor.

Domain-Änderungen

Dieser Cronjob wendet offene Änderungen an Domains an.

Domain-Synchronisierung

Dieser Cronjob synchronisiert im System befindliche Domains mit den Daten beim Registrar.

Domain-Verlängerungen

Dieser Cronjob kümmert sich um Verlängerungen und Kündigungen von Domains und warnt den Kunden vor anstehenden Verlängerungen bzw. dem Ablauf seiner Domain.

E-Mailwarteschlange

Dieser Cronjob arbeitet die E-Mailwarteschlange ab.

Geburtstags-Glückwünsche

Dieser Cronjob versendet auf Wunsch Glückwünsche und einen Gutschein, wenn einer Ihrer Kunden Geburtstag hat.

IP-Lokalisierung

Dieser Cronjob versucht, IP-Adressen von Kunden zu lokalisieren. Das ermöglicht es Ihnen, direkt in der Administration zu sehen, woher ein Besucher kommt und dient der Betrugsprävention.

Mahnungen

Dieser Cronjob versendet Mahnungen für überfällige Rechnungen, siehe Mahnsystem.

Produkt-Einrichtungen

Dieser Cronjob richtet vom Kunden bestellte Produkte im Hintergrund ein.

Proxy-Adressen aktualisieren

Dieser Cronjob ruft eine Liste von bekannten Proxy-IP-Adressen ab und speichert diese zwischen. Das ermöglicht es sourceDESK, Proxy-Nutzern bestimmte Funktionen der Webseite zu sperren, um Betrug vorzubeugen.

Server-Monitoring

Dieser Cronjob überwacht die Server im Monitoring.

System-Status

Dieser Cronjob prüft das System auf Fehler, wie zum Beispiel nicht existente Dateien.

Ticket-Import (POP)

Dieser Cronjob importiert neue E-Mails in das Support-System. Dafür ist das mailparse-Modul für PHP zwingend erforderlich.

Überweisungs-Import

Dieser Cronjob versucht Überweisungen von Ihrer Bank zu importieren, sofern der automatische Import aktiviert ist.

Währungs-Kurse

Dieser Cronjob aktualisiert die Kurse der Währungen automatisch, wenn dies aktiviert ist und die Währungs-Codes gültig sind.

Cronjob-Einrichtung: URL

Die einfachste Variante der Cronjob-Ausführung ist der Aufruf über die Cronjob-URL. Diese finden Sie unter "Einstellungen > System-Einstellungen > Cronjobs", dort erhalten Sie auch das entsprechende Ausführungs-Intervall.

Die URL ist unter dem Webseite-Icon auffindbar, diese muss als Cronjob eingerichtet werden.

Cronjob-Einrichtung: PHP-CLI

Eine weitere Variante zur Ausführung der Cronjobs ist der Aufruf über die PHP-Kommandozeile. Dies ist die bevorzugte Variante. Unter "Einstellungen > System-Einstellungen > Cronjobs" finden Sie die verfügbaren Cronjobs samt Ausführungs-Intervalle. Am Ende einer jeden Zeile der Tabelle finden Sie die Cronjob-URL. In dieser befindet sich der Parameter "job", dieser enthält den Cronjob-Key (etwa recurring). Den Email-Cronjob würden Sie wie folgt einrichten (crontab-Stil):

* * * * * /path/to/php /path/to/sourcedesk/index.php cron queue

Cronjob-Einrichtung: Daemon

Seit Version 1.1.1 reicht es aus, einen Daemon einzurichten, der die Cronjobs automatisch ausführt, wenn diese fällig sind. Alternativ können die Cronjobs auch weiterhin einzeln aufgerufen werden. Der Daemon erfordert das PHP-Modul pthreads. Der Aufruf erfolgt in einer Shell mit:

nohup php /var/www/sourceDESK/index.php cron _all &

Hierbei ist der Pfad zu sourceDESK anzupassen, eventuell muss auch der Pfad für die PHP-Binary geändert werden. Eine Passwort-Authentifizierung ist nicht erforderlich. Der Daemon kann beispielsweise mit systemd verwaltet werden. Hierzu kann eine Datei /etc/systemd/system/sourcedesk.service mit folgendem Inhalt angelegt werden:

[Unit]
Description=sourceDESK Cronjob
Requires=mysqld.service
After=mysqld.service
 
[Service]
User=root
Type=simple
TimeoutSec=0
PIDFile=/var/run/sourcedesk.pid
ExecStart=php -f /var/www/sourceDESK/index.php cron _all> /dev/null 2>/dev/null
KillMode=process
 
Restart=on-failure
RestartSec=30s
 
[Install]
WantedBy=default.target

Die Datei - und jegliche Änderungen - müssen mit systemctl daemon-reload im System bekannt gemacht werden.

Der Dienst kann dann mit systemctl start sourcedesk gestartet werden. Um ihn beim Booten zu starten, muss systemctl enable sourcedesk ausgeführt werden.

Intervall

Wie bereits erwähnt wird das Intervall bei den Cronjobs angezeigt. Dieses Intervall sollte nicht unterschritten werden, es gibt auch nur eine 10-prozentige Toleranz. Das bedeutet, dass ein Cronjob, der alle 60 Minuten laufen soll, zwar auch alle 54 Minuten aufgerufen werden kann, ein geringeres Intervall wird aber nicht möglich sein - der Cronlauf wird direkt abgebrochen.

Für Entwickler

Die Cronjobs finden sich in der Datenbanktabelle cronjobs (eventuell mit Präfix). Dort können Sie neue Cronjobs hinzufügen oder das Intervall verändern - tun Sie dies aber bitte nur, wenn Sie wissen was Sie tun. Jeder Cronjob hat dort unter anderem ein Merkmal key. Das ist der GET-Parameter job beim Aufruf eines Cronjobs. Außerdem muss eine Datei key.php im Verzeichnis controller/crons existieren. Die einfachere Variante dürfte aber sein, weitere Aktionen im Anschluss an einen bestehenden Cronjob durchzuführen, hierzu können Sie den Hook Hook:Cronjob verwenden.