Moodle/Cron
Cron-Job einrichten
Einige Module von Moodle prüfen regelmäßig, ob bestimmte Aufgaben ausgeführt werden müssen. Moodle überprüft z.B. ob es im Forum neue Einträge gibt, die per Email an Nutzer versandt werden müssen.
Das Skript, das all diese Vorgänge steuert, finden Sie im Admin-Verzeichnis und heißt cron.php. Diese Datei läuft nicht von alleine. Sie müssen einen Mechanismus einrichten, der die Datei z.B. alle fünf Minuten ausführt. Dazu ist es erforderlich, dass ein "Impuls" für jedes Modul ausgelöst wird.
Der Auslöser dieses Impulses muss nicht von dem Server erfolgen auf dem Moodle installiert ist.. Wenn Sie auf diesem Server keine Cron-Jobs ausführen können, kann dies von einem anderen Server ausgelöst oder von Ihrem PC gestartet werden. Es ist lediglich nötig, die Datei cron.php alle fünf Minuten aufzurufen.
Testen Sie zuerst, ob die Datei funktioniert. Rufen Sie sie mit Ihrem Browser auf:
http://example.com/moodle/admin/cron.php
Nehmen Sie nun einige Einstellungen vor:
Aufruf des Skripts von der Kommandozeile
Rufen Sie die Datei wie zuvor auf. Nehmen Sie dazu z.B. den Unix-Befehl 'wget':
wget -q -O /dev/null http://example.com/moodle/admin/cron.php
In diesem Beispiel wird das Ergebnis abgelegt (nach /dev/null).
Das gleiche mit lynx:
lynx -dump http://example.com/moodle/admin/cron.php > /dev/null
Alternativ können Sie eine separate PHP-Version nutzen, die über die Kommandozeile gesteuert wird. Der Vorteil dieser Variante ist, dass in den Log-Dateien des Web-Servers der Aufruf von cron.php nicht ständig protokolliert wird. Der Nachteil dieser Variante besteht darin, dass Sie einen Zugang zur Kommando-Zeile der PHP-Version benötigen.
/opt/bin/php /web/moodle/admin/cron.php
(Windows) C:\apache\php\php.exe C:\apache\htdocs\moodle\admin\cron.php
Automatische Ausführung des Skripts alle 5 Minuten
Bei UNIX- Systemen: Use cron. Passen Sie ihre Einstellungen für Cron- Jobs über die Komandozeile mit folgendem Befehl an "crontab -e" und fügen Sie folgende Zeile hinzu:
*/5 * * * * wget -q -O /dev/null http://example.com/moodle/admin/cron.php
Bei Windows-Systemen: Der einfachste Weg ist hier mein Programm zu benutzen, moodle-cron-for-windows.zip wodurch die Anpassungen ganz einfach sind. Sie können alternativ dazu, die in Windows enthaltene Funktion "Scheduled Tasks" benutzen.
Bei Web Hosting Services
Die Oberflächedes Web Host Services bietet Ihnen die Möglichkeit, einen Cron Job einzurichten. Z.B. Cpanel Systeme: Hier gibt es einen Button "Cron jobs". Geben Sie hier die folgenden Unix-Befehle ein.
Kommando-Zeile von Unix nutzen
Es gibt verschiedene Kommandozeilenprogramme, die Sie aufrufen können. Auf Ihrem Server sind vielleicht nicht alle verfügbar.
Z.B. das Unix-Utility 'wget':
wget -q -O /dev/null http://example.com/moodle/admin/cron.php
In diesem Beispiel wird das Ergebnis nicht aufgewahrt (to /dev/null).
Das gleiche unter lynx:
lynx -dump http://example.com/moodle/admin/cron.php > /dev/null
Alternativ können sie eine standalone version von PHP nutzen, die kompiliert in der Kommandozeile läuft. The advantage with doing this is that your web server logs aren't filled with constant requests to cron.php. The disadvantage is that you need to have access to a command-line version of php.
/opt/bin/php /web/moodle/admin/cron.php
Verwendung des crontab Programms auf Unix
All that Cpanel does is provide a web interface to a Unix utility known as crontab. If you have a command line, you can set up crontab yourself using the command:
crontab -e
and then adding one of the above commands like:
*/5 * * * * wget -q -O /dev/null http://example.com/moodle/admin/cron.php
Usually, the "crontab" command will put you into the 'vi' editor. You enter "insert mode" by pressing "i", then type in the line as above, then exit insert mode by pressing ESC. You save and exit by typing ":wq", or quit without saving using ":q!" (without the quotes).
See also
- Scheduled tasks
- Wikipedia article on cron function
- MDL-50694 - Cron message "The operation timed out while waiting for a lock" isn't really an error
Forum discussions:
- 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.