https://docs.moodle.org/38/de/api.php?action=feedcontributions&user=Ann2014&feedformat=atomMoodleDocs - Benutzerbeiträge [de]2024-03-28T20:37:40ZBenutzerbeiträgeMediaWiki 1.39.6https://docs.moodle.org/38/de/index.php?title=Cron-Job&diff=10576Cron-Job2014-08-25T09:22:31Z<p>Ann2014: /* Cron-Einstellungen in Moodle */</p>
<hr />
<div>{{Installation}}<br />
<br />
Der '''Cron-Prozess''' von Moodle ist ein PHP-Skript, das zum Moodle-Standardpaket gehört, und das regelmäßig im Hintergrund ausgeführt werden muss. Das Skript führt in verschiedenen Zeitabständen verschiedene Aufgaben aus, z.B. E-Mails-versenden, Moodle-Berichte aktualisieren, RSS-Feeds aktualisieren , Aktivitätenabschluss kennzeichnen, Forumsbeiträge veröffentlichen. Da zu verschiedenen Aufgaben verschiedene Zeitintervalle gehören, werden nicht alle Aufgaben jedes Mal ausgeführt, wenn das Cron-Skript gestartet wird. <br />
<br />
'''Wichtig''': Sie müssen den Cron-Prozess unbedingt aufsetzen, andernfalls funktioniert Ihre Moodle-Site '''nicht''' richtig.<br />
<br />
Wenn der Cron-Prozess nicht richtig funktioniert, bekommen Sie eine entsprechende Meldung auf der Seite '''Website-Administration-Mitteilungen'''. Damit lässt sich der Cron-Job überprüfen.<br />
<br />
Um das Moodle-Cron-Skript in regelmäßigen Abständen auszuführen, wird ein spezielles Programm (typischerweise <code>cron</code>) verwendet. <br />
<br />
Einen Cron-Job einrichten bedeutet im wesentlichen eine Zeile in die Liste der Cron-Prozesse auf Ihrem Server einzutragen. Auf Unix-basierten Systemen ist diese Liste eine Datei ''crontab'', die alle Nutzer/innen des Servers haben.<br />
<br />
<br />
<br />
==Allgemeines==<br />
Das Aufsetzen eines Cron-Prozesses erfordert zwei Schritte:<br />
#Das richtige Kommando identifizieren, das ausgeführt werden muss.<br />
#Den richtigen Platz auf Ihrem Server finden, wo das Kommando eingetragen werden muss.<br />
<br />
===Das richtige Kommando identifizieren===<br />
In Moodle gibt es zwei Möglichkeiten, das Cron-Skript auszuführen:<br />
# CLI-Skript (CLI = command line interpreter, Kommandozeileninterpreter): Der Pfad zu diesem Skript ist ''/path_to_moodle/admin/cli/cron.php''. Dieses Skript muss von einem PHP CLI Programm auf Ihrem Server ausgeführt werden, z.B. durch folgendes Kommando:<br />
<code>/usr/bin/php /path/to/moodle/admin/cli/cron.php</code><br />
# Webbasiertes Skript: Dieses Skript muss im Webbrowser aufgerufen werden, der Zugriff erfolgt über die URL <nowiki><code>http://Ihre.Moodle.Site/admin/cron.php</code></nowiki>. Sie können einen kommandozeilen-basierten Webbrowser verwenden (z.B. <code>wget</code>), d.h. das Kommando könnte z.B. lauten:<br />
<code>/usr/bin/wget http://Ihre.Moodle.Site/admin/cron.php</code> <br />
Der Vorteil dieses Kommandos besteht darin, dass es von überall ausgeführt werden kann, also nicht notwendigerweise von Ihrem Moodle-Server aus (auf den Sie evtl. gar keinen Zugriff haben), sondern von irgend einem Server aus, auf den Sie zugreifen dürfen.<br />
<br />
===Den richtigen Platz auf dem Server finden===<br />
Dieser Platz hängt ganz wesentlich von Ihrem System ab. Lesen Sie die Dokumentation für Ihre Plattform oder von Ihrem Hosting-Provider. In den meisten Fällen müssen Sie das richtige Kommando (siehe vorheriger Abschnitt) in eine Datei eintragen - entweder über eine ggeignete Benutzerschnittstelle oder durch direktes Editieren dieser Datei.<br />
<br />
Wenn Sie das CLI-Skript verwenden, dann müssen Sie außerdem sicherstellen, dass es vom richtigen Nutzer (des Servers) ausgeführt wird. Diese Einschränkung gilt nicht, wenn Sie das webbasierte Skript verwenden. <br />
<br />
'''Beispiel''': Einrichten des Cron-Prozesses unter Ubuntu/Debian Linux, angemeldet als Nutzer <code>root</code>:<br />
*Verwende das crontab-Kommando, um den Crontab-Editor für den Nutzer <code>www-data</code> zu öffnen (das ist der Apache Webservernutzer auf Debian-basierten Systemen):<br />
$ crontab -u www-data -e<br />
*Ergänzen Sie im Crontab-Editor folgende Zeile, um das CLI-Skript alle 15 Minuten auszuführen:<br />
*/15 * * * * /usr/bin/php /path/to/moodle/admin/cli/cron.php >/dev/null<br />
:'''Hinweis''': Der Eintrag <code>>/dev/null</code> am Ende der Zeile sendet alle Ausgaben des Skripts an "bin" und und verhindert, dass Sie alle 15 Minuten eine E-Mail erhalten.<br />
*Alternativ können Sie folgende Zeile eintragen, um das webbasierte Skript alle 15 Minuten auszuführen:<br />
*/15 * * * * /usr/bin/wget -q -O /dev/null/ http://Ihre.Moodle.Site/admin/cron.php<br />
<br />
Siehe auch [[:en:Cron_with_Windows_OS|Cron unter Windows]] bzw. [[:en:Cron_with_MAC_OS_X|Cron unter Mac OS X]] für Windows- bzw. MacOSX-Server (englische Anleitungen).<br />
<br />
== Mit Dritten cron-Service ==<br />
<br />
Neben der Verwendung von cron auf Ihrem eigenen Server gehostet wird, können Sie Dritten cron-Dienst (in der Regel als Webcron) verwenden:<br />
<br />
*[https://www.easycron.com EasyCron] - Ein Webcron Dienstleister, der die Notwendigkeit von crontab oder andere Aufgabenplaner, um cron-Job eingestellt beseitigt.<br />
<br />
==Cron-Einstellungen in Moodle==<br />
Als Administrator/in können Sie auf der Seite ''[[Einstellungen-Block|Einstellungen]] > Website-Administration > Sicherheit > [[Website-Rechte]]'' verschiedene Einstellungen für den Cron-Prozess vornehmen.<br />
<br />
==Remote Cron==<br />
Wenn Sie das webbasierte Cron-Skript verwenden, können Sie den Moodle-Cron-Job von einem beliebigen anderen Server aus steuern. <br />
<br />
==Cron-Jobs auf verschiedenen Moodle-Servern laufen lassen==<br />
*Wenn beide Server Webserver sind und beide ein und dieselbe Moodle-Instanz bedienen, dann sollte der Cron-Job nur auf einem Server laufen.<br />
* Wenn beide Server verschiedene Moodle-Instanzen bedienen, dann muss für jede Instanz ein Cron-Job eingerichtet werden. Es kann sogar ein einzelner Webserver verschiedene Moodle-Instanzen in verschiedenen Domänen betreiben (über virtuelle Maschinen, siehe https://httpd.apache.org/docs/2.2/vhosts/index.html)<br />
* In dieser Situation https://moodle.org/mod/forum/discuss.php?d=238005 liegt ein Webserver und eine Moodle-Instanz vor. Dann ist ein Cron-Job die richtige Antwort.<br />
* Siehe auch [https://moodle.org/mod/forum/discuss.php?d=242499 diesen Diskussionsbeitrag].<br />
<br />
== Cron in Moodle 2.7+==<br />
{{Neu}}<br />
Das Handling von Cron-Jobs wurde stark überarbeitet: Ab sofort unterstützt Moodle sowohl geplante Vorgänge als auch Adhoc-Aufgaben - siehe MDL-25499. Die Änderungen haben folgende Vorteile:<br />
*Die Moodle-Administration kann die einzelnen Vorgänge zeitlich steuern und entsprechend konfigurieren, siehe [[Geplante Vorgänge]].<br />
*Die einzelnen Aufgaben können parallel abgearbeitet werden.<br />
* Die Cron-Prozesse verwenden Sperrungen, um zu verhindern, dass dieselbe Aufgabe zur selben Zeit von verschiedenen Prozesse abgearbeitet wird.<br />
<br />
Im Ergebnis können Cron-Jobs viel öfter laufen. So können z.B. Forumsbeiträge schneller per E-Mail verschickt werden. <br />
<br />
Die Moodle-Administration kann die Cron-Jobs wie bisher laufen lassen. Es wird jedoch empfohlen, die Häufigkeit auf einmal pro Minute zu erhöhen.<br />
<br />
==Fehlerbehandlung bei geplanten Vorgängen==<br />
{{Neu}}<br />
Manchmal kann es passieren, dass eine einzelne Cron-Job-Aufgabe nicht richtig läuft. Vor Moodle 2.7. führte ein solcher Fehler dazu, dass alle nachfolgenden Cron-Job-Aufgaben nicht mehr abgearbeitet wurden. Die einzige Möglichkeit festzustellen, obb der Cron-Job vollständdig und erfolgreich durchgelaufen ist, war eine automatisierte Prüfung der Cron-Job-Ausgabe (z.B. die Suche nach der Ausgabe "Cron completed at").<br />
<br />
Ab Moodle 2.7. beeinflusst ein Fehler bei der Abarbeitung einer Cron-Job-Aufgabe nicht die erfolgreiche Bearbeitung der anderen Aufgaben. Wenn ein Fehler auftritt, wird dieser Fehler markiert und eine Wiederholung der Bearbeitung angesetzt. <br />
<br />
Auf der Seite [[Geplante Vorgänge]] finden Sie eine Übersicht, welche Cron-Job-Aufgaben aktuell als fehlerhaft markiert sind: Bei diesen Aufgaben steht in der Spalte ''Fehlerverzögerung'' eine von Null verschiedene Zahl (diese Zahl gibt an, wie viele Sekunden bis zur nächsten Ausführung verbleiben). Fehlerhafte Cron-Job-Aufgaben können Sie direkt von der [[Administration über Kommandozeile#Geplante Vorgänge|Kommandozeile]] aufrufen und prüfen, welche konkreten Fehlermeldungen die Ausgabe dann liefert<br />
<br />
==Siehe auch==<br />
* [http://de.wikipedia.org/wiki/Cron Wikipedia-Artikel über Cron]<br />
<br />
Diskussionsbeiträge im Kurs ''Using Moodle'' auf moodle.org:<br />
*[http://moodle.org/mod/forum/discuss.php?d=41827 Cron - can someone give me a quick confirmation of function?]<br />
*[http://moodle.org/mod/forum/discuss.php?d=97684 Cronjob Question]<br />
*[http://moodle.org/mod/forum/discuss.php?d=97457 Slow cron : avoiding simultaneous cron]<br />
*[http://moodle.org/mod/forum/discuss.php?d=117168 Visibility of cron.php]<br />
*[http://moodle.org/mod/forum/discuss.php?d=139263#p609060 How to log the output of a Scheduled Task on Windows] - this discussion explains a nice trick that can be very useful when you are experiencing problems with your Windows Scheduled Task and you need to log the output of the Scheduled Task to a log file.<br />
<br />
[[Category:Website-Administration]]<br />
<br />
[[en:Cron]]</div>Ann2014