Moodle/Cron: Unterschied zwischen den Versionen

Aus Foxwiki
Die Seite wurde neu angelegt: „== Moodle installieren == Dieses Tutorial zeigt, wie Sie Moodle zum ersten Mal installieren. An manchen Stellen geht es recht weit ins Detail, um die Server-Einstellungen auch zu erklären. Das erscheint mitunter etwas kompliziert. Sie werden aber bald feststellen, dass alles sehr leicht ist. In der Regel ist MOODLE in ein paar Minuten installiert. Nehmen Sie sich ein wenig Zeit, diese Anleitung sorgfältig zu lesen - es spart Zeit später! === 1. Syst…“
 
K Textersetzung - „lynx“ durch „linux“
 
(12 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
== Moodle installieren ==
=== 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.


Dieses Tutorial zeigt, wie Sie Moodle zum ersten Mal installieren. An manchen Stellen geht es recht weit ins Detail, um die Server-Einstellungen auch zu erklären. Das erscheint mitunter etwas kompliziert. Sie werden aber bald feststellen, dass alles sehr leicht ist. In der Regel ist MOODLE in ein paar Minuten installiert.
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.


Nehmen Sie sich ein wenig Zeit, diese Anleitung sorgfältig zu lesen - es spart Zeit später!
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.


=== 1. Systemanforderungen ===
Testen Sie zuerst, ob die Datei funktioniert. Rufen Sie sie mit Ihrem Browser auf:
http://example.com/moodle/admin/cron.php


<div style="margin-left:1cm;margin-right:1cm;">Moodle wurde in Linux entwickelt und nutzt PHP, Apache und MySQL (auch als LAMP-Plattform bezeichnet). Es wurde getestet mit PostgreSQL und unter Windows XP und Mac OS X und Netware 6 Umgebungen.</div>
Nehmen Sie nun einige Einstellungen vor:


<div style="margin-left:1cm;margin-right:1cm;">Alles was Sie brauchen ist:</div># <div style="margin-left:1cm;margin-right:1cm;">Web Server Software. Am häufigsten wird [http://www.apache.org/ Apache], genutzt. Moodle sollte aber auch unter jedem anderen Web Server laufen, der PHP unterstützt, wie IIS auf Windows Plattformen. </div>
=== Aufruf des Skripts von der Kommandozeile ===
# <div style="margin-left:1cm;margin-right:1cm;">[http://www.php.net/ PHP] Skript-Sprache (Version 4.1.0 oder jünger). PHP 5 wird ab der Version 1.4. von moodle unterstützt. </div>
# <div style="margin-left:1cm;margin-right:1cm;">einen funktionierenden Datenbankserver: [http://www.mysql.com/ MySQL] oder [http://www.postgresql.org/ PostgreSQL] werden von moodle vollständig unterstützt. </div>


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


<div style="margin-left:1cm;margin-right:1cm;">Diese Voraussetzungen werden von den meisten Anbietern Webspace ohne Probleme erfüllt. Sollten Sie jedoch mit einem Hosting-Anbieter zusammen arbeiten, der diese Optionen nicht anbietet, fragen Sie warum und wechseln Sie ggfs. den Anbieter.</div>
In diesem Beispiel wird das Ergebnis abgelegt (nach /dev/null).


<div style="margin-left:1cm;margin-right:1cm;">Wenn Sie moodle auf Ihrem eigenen Rechner betreiben wollen und Sie mit diesen Begriffen noch wenig anfangen können, dann finden Sie alle Informationen in unserem Leitfaden: [http://moodle.org/doc/?file=installamp.html Installation von Apache, MySQL und PHP]. Er enthält Schritt-für-Schritt Anleitungen zur Installation auf den gängigsten Plattformen.</div>
Das gleiche mit linux:


<div style="margin-left:1cm;margin-right:1cm;">&nbsp;</div>
linux -dump http://example.com/moodle/admin/cron.php > /dev/null


=== 2. Downloaden, entpacken und an die richtige Stelle kopieren ===
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.


<div style="margin-left:1cm;margin-right:1cm;">Moodle liegt als komprimiertes Paket oder über CVS für Sie bereit. Detailerklärungen finden Sie auf der Downloadseite [http://moodle.org/ http://moodle.org/]</div>
/opt/bin/php /web/moodle/admin/cron.php


<div style="margin-left:1cm;margin-right:1cm;">Nach dem Download packen Sie das Archiv oder die CVS Dateien aus. Im neuen Verzeichnis quot;moodle" finden Sie eine Reihe von Dateien und Ordnern.</div>
(Windows) C:\apache\php\php.exe C:\apache\htdocs\moodle\admin\cron.php


<div style="margin-left:1cm;margin-right:1cm;">Sie können den gesamten Ordner in ein Dokumentenverzeichnis Ihres Webservers kopieren, dann finden Sie Moodle unter folgender Adresse http://yourwebserver.com/moodle, oder Sie kopieren alles direkt in das Hauptverzeichnis. Moodle finden Sie dann unter http://yourwebserver.com.</div>
=== Automatische Ausführung des Skripts alle 5 Minuten ===


<div style="margin-left:1cm;margin-right:1cm;">Wenn Sie moodle auf Ihren lokalen PC herunterladen und dann auf den Webserver hochladen, ist es am einfachsten, wenn Sie moodle als eine gepackte Datei herunterladen, auf den Server kopieren und dort entpacken. Ein web hosting interfaces wie Cpanel erlaubt Ihnen Archivpakete mit dem Dateimanager auf dem Server zu entpacken. </div>
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:


=== 3. Verzeichnisstruktur ===
<nowiki>*/5 * * * * wget -q -O /dev/null http://example.com/moodle/admin/cron.php</nowiki>
 
<div style="margin-left:1cm;margin-right:1cm;">Verschaffen Sie sich ruhig einen Überblick über die verschiedenen Verzeichnisse von Moodle und ihren Inhalt:</div>* <div style="margin-left:1cm;margin-right:1cm;">config.php - enthält Grundeinstellungen für moodle. Diese Datei erstellen Sie selbst aus der Datei config-dist.php oder mit der automatischen Installationsroutine </div>
 
* <div style="margin-left:1cm;margin-right:1cm;">install.php - erstellt automatisch die Datei config.php </div>
 
* <div style="margin-left:1cm;margin-right:1cm;">version.php - beschreibt die gerade installierte Version von Moodle </div>
 
* <div style="margin-left:1cm;margin-right:1cm;">index.php - die Startseite</div>
 
* <div style="margin-left:1cm;margin-right:1cm;">admin/ - verwaltet die gesamte Anwendung </div>
* <div style="margin-left:1cm;margin-right:1cm;">auth/ - Plugin Module um Anwender zu identifizieren </div>
* <div style="margin-left:1cm;margin-right:1cm;">blocks/ - Plugin-Module für Blöcke uafden Kursseiten </div>
* <div style="margin-left:1cm;margin-right:1cm;">calender/ - Kalender </div>
* <div style="margin-left:1cm;margin-right:1cm;">course/ - Anzeige und Verwaltung der Kurse </div>
* <div style="margin-left:1cm;margin-right:1cm;">doc/ - Hilfedateien für Moodle (z.B. diese Seite) </div>
* <div style="margin-left:1cm;margin-right:1cm;">files/ - Anzeige und Verwaltung hochgeladener Dateien </div>
* <div style="margin-left:1cm;margin-right:1cm;">lang/ - Texte in verschiedenen Sprachen </div>
* <div style="margin-left:1cm;margin-right:1cm;">lib/ - Bibliotheken des Kerns von Moodle </div>
* <div style="margin-left:1cm;margin-right:1cm;">login/ - Steuerung des Login und der Anmeldungen </div>
* <div style="margin-left:1cm;margin-right:1cm;">mod/ - alle Moodle Kursmodule </div>
* <div style="margin-left:1cm;margin-right:1cm;">pix/ - Grafische Gestaltung der Seiten </div>
* <div style="margin-left:1cm;margin-right:1cm;">theme/ - Vorlagen für die visuelle Gestaltung der Seiten (Themes/Skins). </div>
* <div style="margin-left:1cm;margin-right:1cm;">user/ - Anzeige und Verwaltung von Benutzern </div>
 
 
 
=== 4. Installationsskript zur Erstellung der config.php-Datei  ===
 
<div style="margin-left:1cm;margin-right:1cm;">Rufen Sie das Installationsskript (install.php) direkt auf, mit dem Webbrowser '''http://yourserver.de/install.php'''. </div>
 
<div style="margin-left:1cm;margin-right:1cm;">(Die Installationsroutine versucht einen cookie zu setzen. Wenn sch ein popup-Fenster öffnet müssen Sie den Cookie bestätigen!) </div>
 
<div style="margin-left:1cm;margin-right:1cm;">Moodle erkennt, dass eine Konfiguration erforderlich ist und führt Sie über mehrere Schritte durch die Erstellung der Konfigurationsdatei '''config.php. '''Am Ende versucht moodle die Datei an der richtigen Stelle abzuspeichern. Sollte dies nicht erfolgen, könenn sie die Datei config.php abspeichern und manuell in das Hauptverzeichnis von moodle auf dem Server kopieren.</div>
 
<div style="margin-left:1cm;margin-right:1cm;">Die Installationsroutine überprüft die Servereinstellungen und gibt bei Bedarf Empfehlungen zur Behebung von Problmen. Zumeist sollte es reibungslos ablaufen. Im folgenden finden Sie einige Informationen, falls der Ablauf stockt. </div>
 
=== 4.1 Die Web-Server Einstellungen überprüfen ===
 
<div style="margin-left:1cm;margin-right:1cm;">Stellen Sie zunächst sicher, dass Ihr Webserver automatisch die Index.php Datei aufruft (evtl ergänzend zur index.html, default.htm etc).</div>
 
<div style="margin-left:1cm;margin-right:1cm;">In Apache erfolgt diese Einstellung in der httpd.conf Datei. Darin sollte z.B. folgender Text stehen:</div>
 
'''DirectoryIndex''' index.php index.html index.htm
 
<div style="margin-left:1cm;margin-right:1cm;">index.php muss in dieser Übersicht aufgeführt sein. Am besten steht es sogar ganz am Anfang der Liste.</div>
 
<div style="margin-left:1cm;margin-right:1cm;">Zweitens, Wenn Sie Apache 2 verwenden, dann sollte die Variable AcceptPathInfo on gestellt sein. Sie läsdt Argumente wie http://server/file.php/arg1/arg2 zu. Es ist wichtig relative Links zwischen Ressourcen zuzulassen und die Leistungssteigerung zu ermöglich. Sie können dies durch das Einfügen der der folgenden Zeile in die Datei httpd.conf file zulassen.</div>
 
'''AcceptPathInfo''' on
 
<div style="margin-left:1cm;margin-right:1cm;">Drittens: erfordert Moodle einige PHP-Einstellungen, damit es arbeiten kann. Zumeist sind diese bereits als Grundeinstellungen vorhanden. Einige PHP-Server (besonders solche mit älteren Versionen) müssen entsprechend eingestellt werden. Sie finden die Einstellungen in der PHP-Konfigurationsdatei (php.ini):</div>
 
magic_quotes_gpc = 1  (erwünscht, nicht erforderlich)
magic_quotes_runtime = 0  (erforderlich)
file_uploads = 1
session.auto_start = 0
session.bug_compat_warn = 0
 
<div style="margin-left:1cm;margin-right:1cm;">Wenn Sie keinen Zugriff auf die Dateien httpd.conf oder php.ini auf Ihrem Server haben, oder wenn andere Anwendungen andere Einstellungen erfordern, dann können sie die Einschreibungen überschreiben.</div>
 
<div style="margin-left:1cm;margin-right:1cm;">Erstellen Sie eine Datei mit Namen .htaccess im Hauptverzeichnis von Moodle mit der Definition der folgenden Einstellungen. Dies ist jedoch nur bei Apache Servern möglich und auch nur dann wenn das Überschreiben zulässig ist.</div>
 
DirectoryIndex index.php index.html index.htm
<IfDefine APACHE2>
    AcceptPathInfo on
</IfDefine>
 
php_flag magic_quotes_gpc 1
php_flag magic_quotes_runtime 0
php_flag file_uploads 1
php_flag session.auto_start 0
php_flag session.bug_compat_warn 0
 
<div style="margin-left:1cm;margin-right:1cm;">Sie können nun auch die maximale Dateigröße festlegen, die hochgeladen werden darf:</div>
 
LimitRequestBody 0
php_value upload_max_filesize 2M
php_value post_max_size 2M
 
<div style="margin-left:1cm;margin-right:1cm;">Am einfachsten kopieren Sie die Beispieldatei aus lib/htaccess und bearbeiten Sie nach Ihren Vorstellungen. Sie finden dort weitere Informationen. Rufen Sie in der Unix Shell folgenden Befehl auf:</div>
 
cp lib/htaccess .htaccess
 
=== 4.2 Eine Datenbank erstellen ===
 
<div style="margin-left:1cm;margin-right:1cm;">Erstellen Sie nun eine leere Datenbank (z.B. "moodle") in Ihrem Datenbanksystem mit dem Nutzer (z.B. "moodleuser") der auf diese Datenbank zugreifen kann. Richten Sie in jedem Falle ein Passwort ein, wenn Sie einen Online-Server nutzen, damit niemand anderer auf Ihre Datenbank zugreifen kann.</div>
 
<div style="margin-left:1cm;margin-right:1cm;">Wenn Sie einen gehosteten Server verwenden, haben Sie evtl eine Oberfläche zur Einrichtung einer neuen Datenbank. </div>
 
<div style="margin-left:1cm;margin-right:1cm;">Das '''Cpanel''' System ist sehr verbreitet. In CPanel erstellen Sie mit den folgenden Schritten eine Datenbank, </div># <div style="margin-left:1cm;margin-right:1cm;">Klick auf das "'''MySQL Databases'''" Icon. </div>
# <div style="margin-left:1cm;margin-right:1cm;">Eingabe von "moodle" in das Datenbankfeld und Klick auf "'''Datenbank hinzufügen'''". </div>
# <div style="margin-left:1cm;margin-right:1cm;">Nutzernamen und sicheres Passwort eingeben, das Sienicht noch an anderer Stelle verwenden, und Klick auf "'''Nutzer hinzufügen'''". </div>
# <div style="margin-left:1cm;margin-right:1cm;">Verwenden Sie jetzt den "'''Nutzer zur Dtaenbank hinzufügen'''" Button, damit der neue Nutzer Datenbankzugriff erhält "'''ALLE'''" Rechte für die neue Datenbank. </div>
# <div style="margin-left:1cm;margin-right:1cm;">Der Nutzername und der Datenbankname kann durch den Cpanel Account bereits vordefiniert sien. Wenn Sie diese Daten bei der moodle Installation angebern - verwenden Sie bitte den vollständigen Eintrag. </div>
 
 
 
<div style="margin-left:1cm;margin-right:1cm;">Aufruf für MySQL unter Unix(Beispiel):</div>
 
  <nowiki># mysql -u root -p</nowiki>
  > CREATE DATABASE moodle;
  > GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON moodle.*
          TO moodleuser@localhost IDENTIFIED BY 'yourpassword';
  > quit
  <nowiki># mysqladmin -p reload</nowiki>
 
<div style="margin-left:1cm;margin-right:1cm;">Aufruf für PostgreSQL (Beispiel):</div>
 
  <nowiki># su - postgres</nowiki>
  > psql -c "create user moodleuser createdb;" template1
  > psql -c "create database moodle;" -U moodleuser template1
  > psql -c "alter user moodleuser nocreatedb;" template1
 
<div style="margin-left:1cm;margin-right:1cm;">(Für MySQL empfehle ich den Gebrauch von [http://phpmyadmin.sourceforge.net/ phpMyAdmin] zur Bearbeitung der Datenbank).</div>
 
<div style="margin-left:1cm;margin-right:1cm;">Ab der Version 1.0.8 unterstützt Moodle Vorzeichen für die Datenbanktabellen. Dadurch können Sie die gleiche Datenbank mit mehreren Moodle-Installationen oder anderen Webanwendungen nutzen.</div>
 
=== 4.3 Ein Datenverzeichnis erstellen ===
 
<div style="margin-left:1cm;margin-right:1cm;">Moodle braucht nun etwas Speicherplatz für hochgeladene Dateien wie Kursdokumente und Nutzerbilder.</div>


<div style="margin-left:1cm;margin-right:1cm;">Das Installationsskript versucht ein solches Verzeichnis zu erstellen. Falls dies nicht gelingt, legen Sie ein solches Verzeichnis selber an. Erstellen Sie an einer beliebigen Stelle auf Ihrem Server für diesen Zweck ein Verzeichnis. Aus Sicherheitsgründen sollte dierses Verzeichnis NICHT für jedermann direkt übers Web zugreifbar sein. Am besten richten Sie es ausserhalb des Programmverzeichnisses ein, oder Sie schützen es mit Hilfe einer .htaccess-Datei mit folgendem Inhalt:</div>
Bei Windows-Systemen: Der einfachste Weg ist hier mein Programm zu benutzen, [http://moodle.org/download/moodle-cron-for-windows.zip moodle-cron-for-windows.zip] wodurch die Anpassungen ganz einfach sind. Sie können alternativ dazu, die in Windows enthaltene Funktion "Scheduled Tasks" benutzen.


deny from all
'''Bei Web Hosting Services'''


<div style="margin-left:1cm;margin-right:1cm;">Prüfen Sie ob Moodle in diesem Vezeichnis Dateien ablegen darf, indem Sie überprüfen, ob die WebServer Software (z.B. Apache) für dieses Verzeichnis Schreiberlaubnis hat. Auf Unix-Rechnern lautet die Einstellung für das Verzeichnis "nobody" oder "apache". Geben Sie den Nutzern die Rechte zum Schrreiben, Lesen und Ausführen.</div>
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.  


<div style="margin-left:1cm;margin-right:1cm;">Auf Cpanel Systemen können Sie den "Dateimanager" verwenden, um den Ordner zu finden und die "Zugriffsrechte anzupassen". Auf einigen gehosteten Servern müssen Sie die Zugriffsrechte für die Gruppe definieren, damit andere Nutzer Ihre Dateien nicht lesen oder verändern können. </div>
=== Kommando-Zeile von Unix nutzen  ===


<div style="margin-left:1cm;margin-right:1cm;">Der Administrator für Ihren Server unterstützt Sie bei Problemen. Auf einihgen Servern ist die PHP-Einstellung "Safe Mode" ''erforderlich''. Der Administrator wird diese Einstellung für Sie vornehmen. </div>
Es gibt verschiedene Kommandozeilenprogramme, die Sie aufrufen können. Auf Ihrem Server sind vielleicht nicht alle verfügbar.


=== 5. Die Administrationsseite starten ===
Z.B. das Unix-Utility 'wget':


<div style="margin-left:1cm;margin-right:1cm;">Nachdem die Datei config.php angelegt wurde, wird nun die Adminseite aufgerufen, die Sie durch die weitere Konfiguration führt. Beim ersten Aufruf der Seite müssen Sie der GPL-Lizenzvereinbarung zustimmen bevor das Setup fortgesetzt wird.</div>
wget -q -O /dev/null http://example.com/moodle/admin/cron.php


<div style="margin-left:1cm;margin-right:1cm;">Moodle richtet nun die Datenbank ein und erstellt die erforderlichen Tabellen in der Datenbank. Zuerst werden die Datenbanktabellen erstellt. Sie sehen auf dem Bildschirm eine Reihe von SQL-Meldungen und Bestätigungsmeldungen in roter oder grüner Schrift. Dies sieht in etwa so aus:</div>
In diesem Beispiel wird das Ergebnis nicht aufgewahrt (to /dev/null).


<div style="margin-left:1cm;margin-right:1cm;">CREATE TABLE course ( id int(10) unsigned NOT NULL auto_increment, category int(10) unsigned NOT NULL default '0', password varchar(50) NOT NULL default '', fullname varchar(254) NOT NULL default '', shortname varchar(15) NOT NULL default '', summary text NOT NULL, format tinyint(4) NOT NULL default '1', teacher varchar(100) NOT NULL default 'Teacher', startdate int(10) unsigned NOT NULL default '0', enddate int(10) unsigned NOT NULL default '0', timemodified int(10) unsigned NOT NULL default '0', PRIMARY KEY (id)) TYPE=MyISAM</div>
Das gleiche unter linux:


<div style="margin-left:1cm;margin-right:1cm;">SUCCESS</div>
linux -dump http://example.com/moodle/admin/cron.php > /dev/null


<div style="margin-left:1cm;margin-right:1cm;">...und so weiter, gefolgt von: Main databases set up successfully.</div>
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.


<div style="margin-left:1cm;margin-right:1cm;">Wenn Sie dies nicht angezeigt bekommen, besteht ein Problem mit der Datenbank oder den Einstellungen in der Konfigurationsdatei config.php. Prüfen Sie, ob PHP nicht im eingeschränkten "safe mode" läuft (Kommerzielle Webhoster aktivieren häufig den safe mode). Die PHP Variablen können Sie selber mit einer kleinen Datei mit folgendem Inhalt überprüfen: <? phpinfo() ?>. Speichern Sie die Datei in einen Webverzeichnis und rufen Sie sie mit dem Browser auf. Nun können Sie alle Einstellungen von PHP ablesen. Prüfen Sie diese Schritte und und versuchen Sie dann die Admin-Seite erneut aufzurufen.</div>
/opt/bin/php /web/moodle/admin/cron.php  


<div style="margin-left:1cm;margin-right:1cm;">Scrollen Sie nun bis zum Ende der Seite und drücken Sie den Button "Continue/Weiter" .</div>
=== 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:


<div style="margin-left:1cm;margin-right:1cm;">Danach sehen Sie eine Reihe von Anzeigen, die das Erstellen der Tabellen für die verschiedenen Module von Moodle bestätigen. Wie zuvor sollten alle Einträge grün sein.</div>
crontab -e


<div style="margin-left:1cm;margin-right:1cm;">Drücken Sie nun am Fuß der Seite wieder den "Continue/Weiter" Button.</div>
and then adding one of the above commands like:


<div style="margin-left:1cm;margin-right:1cm;">Nun sehen Sie ein Formular mit dem Sie weitere Einstellungen an Ihrem Moodle vornehmen können, wie z.B. die voreingestellte Sprache, SMTP hosts und so weiter. Sie müssen nicht alle Einstellungen sofort vornehmen. Sie können die Einstellungen jederzeit im Administrationsmenu nachbearbeiten. Am Fuß der Seite finden Sie wieder einen Button "Ändern der Einstellungen/Save changes" Button.</div>
<nowiki>*/5 * * * * wget -q -O /dev/null http://example.com/moodle/admin/cron.php</nowiki>


<div style="margin-left:1cm;margin-right:1cm;">Wenn (und wirklich nur dann) das Setup stecken bleibt, dann hat Ihr Server womöglich ein "buggy referrer" Problem. Dieses ist jedoch leicht zu beheben: Setzen Sie in der Datei config.php die Variable secureforms auf off und starten Sie die Adminseite erneut.</div>
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).


<div style="margin-left:1cm;margin-right:1cm;">Als nächstes sehen Sie eine Vielzahl von Statusmeldungen von der Einrichtung der erforderliche Tabellen in der Datenbank für die verschiedenen moodle Module. Sie sollten - wie zuvor - in grüner Schrift bestätigt sein.</div>
= Beschreibung =
Der Moodle-"cron"-Prozess ist ein PHP-Skript (Teil der Moodle-Standardinstallation), das regelmäßig im Hintergrund ausgeführt werden muss. Das Moodle-Cron-Skript führt verschiedene Aufgaben in unterschiedlichen Zeitabständen aus.


<div style="margin-left:1cm;margin-right:1cm;">Scrollen Sie jeweils nach unten auf derSeite und bestätigen Sie den "Fortsetzen/Weiter" Link.</div>
WICHTIG: Überspringen Sie nicht die Einrichtung des cron-Prozesses auf Ihrem Server für Ihr Moodle. Ohne ihn wird Ihre Website nicht richtig funktionieren.'''


<div style="margin-left:1cm;margin-right:1cm;">Auf der nächsten Seite legen Sie weitere Einstellungen Ihrer Seite fest (z.B. Name der Seite, Formate, Beschreibungen und so weiter). Füllen Sie alle Angaben aus (Änderungen können Sie jederzeit über das Administrationsmenu vornehmen) und klicken Sie auf "Änderungen bestätigen/Save changes".</div>
Es wird empfohlen, ''den Cron jede Minute laufen zu lassen'', wie es für das asynchrone Löschen von Aktivitäten bei Verwendung des [[Papierkorb]]s erforderlich ist.


<div style="margin-left:1cm;margin-right:1cm;">Als letzten Schritt legen Sie die Zugangsdaten für den Administrator von Moodle fest. Tragen Sie Ihren eigenen Name, E-Mail etc. ein und klicken Sie auf "Änderungen bestätigen/Save changes". Nicht alle Felder müssen ausgefüllt werden. Falls Sie etwas vergessen haben, werden Sie automatisch daran erinnert.</div>
Das cron-Programm (das das Moodle-Skript ausführt) ist ein zentraler Bestandteil von Unix-basierten Systemen (einschließlich Linux und OSX) und wird für die Ausführung aller Arten von zeitabhängigen Diensten verwendet. Unter Windows besteht die einfachste Lösung darin, eine Aufgabe im Windows-Taskplaner zu erstellen und sie in regelmäßigen Abständen auszuführen. Bei Shared Hosting sollten Sie in der Dokumentation nachsehen (oder den Support fragen), wie cron konfiguriert ist. Die meisten Shared-Hosting-Systeme verwenden CPanel zur Verwaltung von Websites und verfügen in der Regel über einen Abschnitt für Cron-Jobs im Panel.


<div style="margin-left:1cm;margin-right:1cm;">'''Stellen Sie unbedingt sicher, dass Sie sich den Benutzernamen und das Passwort für den Administrationszugang merken. Er ist erforderlich für spätere Verwaltungen auf Moodle.'''</div>
Im Wesentlichen besteht die Aufgabe darin, einen einzelnen Befehl zur Liste der Cron-Aktivitäten auf Ihrem System hinzuzufügen. Auf Unix-Systemen ist diese Liste eine Datei namens 'crontab', die alle Benutzer haben.  
== Allgemeine Diskussion ==
Siehe die späteren Abschnitte für Ihren Servertyp; dieser Abschnitt enthält einige allgemeine Hintergrundinformationen.  


Wenn aus irgend einem Grund der Installationsprozess unterbrochen wurde bevor Sie die Zugangsdaten für den Admin erstellt haben, so können Sie den voreingestellten Adminzugang mit den Nutzernamen "'''admin'''", mit Passwort "'''admin'''" verwenden. ;.)
Bei der Implementierung von cron gibt es im Wesentlichen zwei Schritte:
# Identifizierung des richtigen Befehls zur Ausführung
# den richtigen Ort auf Ihrem System finden, um den Befehl auszuführen
=== Ausarbeitung des Moodle cron Befehls ===
Moodle bietet zwei verschiedene Möglichkeiten, cron einzusetzen, die unterschiedliche Skripte innerhalb der Moodle-Installation verwenden. Diese sind wie folgt...
# Das CLI-Skript (Kommandozeileninterpreter). Dieses befindet sich im Pfad <pre>/path/to/moodle/admin/cli/cron.php</pre> Im Zweifelsfall ist dies das richtige Skript. Es muss von einem "PHP CLI"-Programm auf Ihrem Computer ausgeführt werden. Der endgültige Befehl könnte also etwa so aussehen: <pre>/usr/bin/php /path/to/moodle/admin/cli/cron.php</pre> Sie können (und sollten) dies auf Ihrer Kommandozeile ausprobieren, um zu sehen, ob es funktioniert. WARNUNG: Überprüfen Sie, ob die PHP-Version auf der Kommandozeile mit der von Ihnen gewählten Moodle-Version kompatibel ist. Das Kommandozeilen-PHP-Programm unterscheidet sich von dem, das auf Ihrer Website läuft, und ist nicht immer die gleiche Version.'''
# Wenn Sie das CLI-Skript aus irgendeinem Grund nicht ausführen können, gibt es das webbasierte Skript. Beachten Sie, dass dieses Skript jetzt veraltet ist und in zukünftigen Versionen entfernt werden könnte. Es muss über einen Webbrowser ausgeführt werden und wird über eine Web-URL wie '''http://your.moodle.site/admin/cron.php''' aufgerufen. Es gibt auch kommandozeilenbasierte Webbrowser (z.B. wget), so dass der endgültige Befehl wie <pre>/usr/bin/wget http://your.moodle.site/admin/cron.php</pre> aussehen kann. Wenn Sie cron auf Ihrem Rechner nicht zum Laufen bekommen, können Sie es auch woanders ausführen.
===Der webbasierte Moodle-Cron-Befehl===
* Wenn Sie die Wahl haben, verwenden Sie nicht den webbasierten Cron-Befehl. Er wird wahrscheinlich in einer zukünftigen Moodle-Version entfernt werden.
* Ab Moodle 2.9 kann der Cron-Job standardmäßig nicht mehr über das Web ausgeführt werden. Sie werden eine Fehlermeldung erhalten:
!!! Sorry, der Internetzugang zu dieser Seite wurde vom Administrator gesperrt. !!!
* Sie können dies unter ' Dashboard ► Site administration ► Security ► Site policies ' ändern, indem Sie die Option 'Cron execution via command line only' deaktivieren.
** Sie werden gewarnt, dass die Ausführung des Cron von einem Webbrowser aus privilegierte Informationen für anonyme Benutzer preisgeben kann. Es wird daher empfohlen, den Cron nur über die Befehlszeile auszuführen oder ein Cron-Passwort für den Fernzugriff festzulegen.'
** Sie können dann ein 'Cron-Passwort für den Fernzugriff' eingeben. Wenn Sie dieses Feld leer lassen, ist kein Passwort erforderlich.
** Dies bedeutet, dass das Skript cron.php nicht von einem Webbrowser aus ausgeführt werden kann, ohne dass das Kennwort in der folgenden Form der URL angegeben wird:
  http://site.example.com/admin/cron.php?password=opensesame
=== Den richtigen Ort für die Eingabe des Befehls finden ===
Dies hängt wirklich von dem System ab, das Sie verwenden, und Sie sollten die Dokumentation für Ihre Plattform oder Ihr Hosting finden und lesen. In den meisten Fällen besteht die Ausführung von Moodle cron darin, dass Sie den richtigen Befehl (siehe oben) festlegen und ihn dann zusammen mit der Zeit, zu der der Befehl ausgeführt werden soll, in eine Art Datei eintragen. Dies kann entweder über eine spezielle Benutzeroberfläche oder durch direkte Bearbeitung der Datei geschehen.


<div style="margin-left:1cm;margin-right:1cm;">Wenn Sie diesen Schritt erfolgreich abgeschlossen haben, sehen Sie die Administrationsseite. In dem Menu (es wird, wenn Sie sich als Admin einloggen auch auf der Startseite angezeigt) können Sie alle weiteren Einstellungen an Ihrem Moodle vornehmen wie z.B.:</div>* <div style="margin-left:1cm;margin-right:1cm;">Erstellen und löschen von Kursen </div>
Wenn Sie die CLI-Version verwenden, müssen Sie auch sicherstellen, dass der Cron-Prozess als der richtige Benutzer ausgeführt wird. Dies ist bei der Web-Version nicht der Fall.  
* <div style="margin-left:1cm;margin-right:1cm;">Erstellen und bearbeiten von Nutzerzugängen </div>
* <div style="margin-left:1cm;margin-right:1cm;">Verwaltung von Dozentenzugängen </div>
* <div style="margin-left:1cm;margin-right:1cm;">Veränderungen von Einstellungen,die für die gesamte Seite gelten. </div>


Beispiel... Installation von cron auf Ubuntu/Debian Linux. Angenommen, Sie sind als root eingeloggt...


Verwenden Sie den Befehl crontab, um ein Crontab-Editorfenster für den Benutzer www-data zu öffnen. Dies ist der Benutzer, unter dem Apache (der Webserver) auf Debian-basierten Systemen läuft''
<pre>
$ crontab -u www-data -e
</pre>
''Dadurch wird ein Editorfenster geöffnet. Um das cli cron-Skript alle 1 Minute laufen zu lassen, fügen Sie die Zeile:''
<pre>
* * * * * /usr/bin/php /path/to/moodle/admin/cli/cron.php >/dev/null
</pre>
HINWEIS: Das abschließende '''>/dev/null''' sendet alle Ausgaben in den 'bin' und verhindert, dass Sie alle 1 Minute eine E-Mail erhalten.
== cron auf Ihrem System einrichten ==
Wählen Sie die Informationen für Ihren Servertyp aus:
*[[Cron mit Unix oder Linux]]- Cron-Dienste auf verschiedenen UNIX- und Linux-Betriebssystemen.
*[[Cron unter Windows OS]] - Cron-Dienste unter Windows
*''Apple OSX''' - verwenden Sie den eingebauten Dienst 'crontab', der genau dasselbe ist wie [[Cron unter Unix oder Linux]]. Vielleicht möchten Sie es aber auch auf die 'Apple-Art' mit launchd machen - siehe [[Cron mit MAC OS X]]
*[[Cron mit Webhosting-Diensten]]- Cron-Dienste in verschiedenen Webhosting-Beispielen.
Hier sind einige weitere Anleitungen für bestimmte Hosts (bitte prüfen Sie, ob diese aktuell sind):
*[[Cron auf 1und1 shared servers]]
== Verwendung eines Cron-Dienstes eines Drittanbieters ==
Neben der Verwendung von Cron, das auf Ihrem eigenen Server gehostet wird, können Sie auch Cron-Dienste von Drittanbietern verwenden (normalerweise webcron genannt):
*[https://cron-job.org/ cron-job.org] ist ein kostenloser Dienst. (1Minute cron ist möglich)


<div style="margin-left:1cm;margin-right:1cm;">Die Installation ist jetzt noch nicht ganz abgeschlossen. Sie haben noch eine wichtige Sache zu erledigen (siehe nächster Abschnitt über cron jobs </div>
*[https://www.easycron.com EasyCron] - Ein Webcron-Dienstleister, der die Notwendigkeit von crontab oder anderen Aufgabenplanern zum Einrichten von Cron-Jobs eliminiert.


=== 6. Einen Cron-Job einrichten ===
*[https://webcron.talent-factory.ch/ WebCron] - Ein kostenloser und einfacher Webcron-Dienstleister.
=== Cron-Einstellungen in Moodle ===
Ein Administrator kann die Cron-Ausführung nur über die Kommandozeile oder ein Cron-Passwort für den Fernzugriff in den "Sicherheitseinstellungen" der Website-Administration einstellen.
===Ferngesteuerter Cron===
Mit der 'webbasierten' Version von cron ist es völlig in Ordnung, den cron-Prozess auf einem anderen Rechner als dem Moodle-Server zu platzieren. Zum Beispiel kann der cron-Dienst auf einem Unix-Server die cron-Webseite auf einem Windows-basierten Moodle-Server aufrufen.
==Planen von Aufgaben==
Ein Administrator kann Cron-Aufgaben unter Administration > Website-Verwaltung > Server > Geplante Aufgaben sehr genau planen, siehe [[Geplante Aufgaben]]
==Cron für mehrere Moodle-Server laufen lassen==
* Die Aufgaben können parallel laufen und die Prozesse verwenden Sperren, um zu verhindern, dass Aufgaben zur gleichen Zeit laufen, was es ermöglicht, Cron von mehreren Webservern aus zu starten, die dieselbe Moodle-Instanz bedienen.


<div style="margin-left:1cm;margin-right:1cm;">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.</div>
* Wenn Sie verschiedene Moodle-Instanzen auf demselben Server betreiben, dann benötigt jede Moodle-Instanz einen Cron-Job. (Sogar ein einzelner Apache-Webserver kann verschiedene Moodle-Instanzen auf verschiedenen Domains laufen lassen, indem er seine Fähigkeit zu virtuellen Hosts nutzt [https://httpd.apache.org/docs/2.2/vhosts/index.html https://httpd.apache.org/docs/2.2/vhosts/index.html].)
== Fehlersuche bei geplanten Tasks ==
Manchmal kann es vorkommen, dass eine bestimmte Cron-Aufgabe nicht richtig funktioniert. In Moodle-Versionen vor 2.7 hat jede Cron-Aufgabe, die Ausnahmen auslöste, den Rest der Cron-Aufgabe am Laufen gehindert. Die einzige Möglichkeit zu überwachen, ob Cron jedes Mal abgeschlossen wurde, war eine automatische Überprüfung der Ausgabe von Cron (z.B. die Suche nach der Zeichenkette "Cron completed at ").


<div style="margin-left:1cm;margin-right:1cm;">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.</div>
In Moodle 2.7 und höher verhindert eine einzelne fehlgeschlagene geplante Aufgabe nicht die Fertigstellung der übrigen Aufgaben. Wenn eine einzelne geplante Aufgabe fehlschlägt, wird sie als Fehlschlag markiert und für einen erneuten Versuch eingeplant. Wenn die Aufgabe immer wieder fehlschlägt, wird die nächste geplante Zeit verschoben, bis sie höchstens einmal alle 24 Stunden versucht wird. Auf der [[Geplante Aufgaben]]-Verwaltungsseite können Sie jedoch sehen, ob eine Aufgabe gerade fehlschlägt (sie hat eine Fehlschlagverzögerung ungleich Null - das ist die Anzahl der Sekunden, die gewartet wird, bevor eine fehlgeschlagene Aufgabe erneut versucht wird). Eine einfache Möglichkeit, eine fehlgeschlagene Aufgabe zu debuggen, besteht darin, sie sofort mit dem [[Verwaltung über die Kommandozeile#Geplante Aufgaben|cli scheduled task runner]] auszuführen und die Ausgabe zu überwachen.
== Protokollierung und Überwachung ==
Idealerweise sollten Sie auch die Ausgabe von cron irgendwo protokollieren und auf Probleme hin überwachen. Sie können den Gesamtstatus von cron überwachen, um sicherzustellen, dass keine Fehler vorliegen, indem Sie Folgendes besuchen:


<div style="margin-left:1cm;margin-right:1cm;">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.</div>
Website-Verwaltung / Berichte / Systemstatus (/report/status/index.php)


<div style="margin-left:1cm;margin-right:1cm;">Testen Sie zuerst, ob die Datei funktioniert. Rufen Sie sie mit Ihrem Browser auf:</div>
Sie können diesen Statusbericht auch mit Tools wie Icinga / Nagios verbinden, indem Sie die Check API (https://docs.moodle.org/dev/Check_API) cli-Befehle verwenden oder mit Hilfe von Plugins wie https://github.com/catalyst/moodle-tool_heartbeat.


http://example.com/moodle/admin/cron.php
<code sh>
/admin/cli/checks.php
</code>


<div style="margin-left:1cm;margin-right:1cm;">Nehmen Sie nun einige Einstellungen vor:</div>
Wenn Fehler auftreten, können Sie weitere Details zu kürzlich ausgeführten Tasks in der Spalte "Logs" auf der Seite "Geplante Tasks" abrufen, allerdings werden dort keine Fehler bei Ad-hoc-Tasks angezeigt:


==== Aufruf des Skripts von der Kommandozeile ====
Website-Verwaltung / Server / Aufgaben / Geplante Aufgaben (/admin/tool/task/scheduledtasks.php)


<div style="margin-left:1cm;margin-right:1cm;">Rufen Sie die Datei wie zuvor auf. Nehmen Sie dazu z.B. den Unix-Befehl 'wget':</div>
Um Fehlschläge von Ad-hoc-Aufgaben zu sehen, müssen Sie die Aufgabe entweder selbst manuell ausführen und die Fehler sehen, oder Sie müssen die Logs bereits zur Überprüfung gesammelt haben. Für ein Moodle, das auf einem einzelnen Rechner läuft, könnte man in eine einfache Logdatei protokollieren, oder für einen Cluster könnte man syslogd oder ähnliches verwenden, z.B.:
<pre>
* * * * * /usr/bin/php /path/to/moodle/admin/cli/cron.php 2>&1 | /usr/bin/logger ...
</pre>
== Adhoc-Aufgaben mit geringer Latenz ==
Jedes Mal, wenn cron ausgeführt wird, werden nach den geplanten Aufgaben auch die Ad-hoc-Aufgaben ausgeführt. Während geplante Aufgaben höchstens einmal pro Minute ausgeführt werden können, können Ad-hoc-Aufgaben jederzeit in eine Warteschlange gestellt werden, und im Allgemeinen möchten Sie, dass sie so schnell wie möglich verarbeitet werden und nicht erst auf die geplante Aufgabe warten müssen. Wenn Sie nur die normale admin/cli/cron.php ausführen, kann es sein, dass sie nicht nur warten muss, um alle geplanten Aufgaben zuerst zu bearbeiten, sondern dass Sie, wenn sie bereits beendet ist, bis zur nächsten Minute warten müssen, bis cron erneut startet, um sie zu bearbeiten.


wget -q -O /dev/null http://example.com/moodle/admin/cron.php
Stattdessen können Sie einen oder mehrere spezielle Ad-hoc-Aufgabenprozessoren laufen lassen, die parallel zum Hauptprozess von cron laufen.
<pre>
* * * * * /usr/bin/php /path/to/moodle/admin/cli/adhoc_task.php --execute --keep-alive=59
* * * * * /usr/bin/php /pfad/zu/moodle/admin/cli/adhoc_task.php --execute --keep-alive=59
...
</pre>
Ab Moodle 3.9 wird die Option-keep-alive wie ein Daemon ausgeführt, d.h. wenn die Warteschlange leer ist, wird sie nicht beendet, sondern wartet darauf, dass neue Aufgaben in die Warteschlange gestellt werden, damit sie so bald wie möglich mit der Bearbeitung beginnen kann.
== Cron mit mehreren Prozessen skalieren ==
Wenn Ihre Website wächst, werden viele der geplanten Aufgaben länger dauern, und es werden auch mehr Ad-hoc-Aufgaben in der Warteschlange stehen, die bearbeitet werden müssen. Das Cron-System ist so konzipiert, dass es parallel arbeitet, aber jeder einzelne Prozess kann nur eine Aufgabe zur gleichen Zeit bearbeiten, so dass Sie mehrere Cron-Kli's laufen lassen müssen. Sie können im Allgemeinen eine ziemlich große Anzahl von Cron-Prozessen auf einer dedizierten Cron-Instanz laufen lassen, bevor Sie mehrere Cron-Instanzen laufen lassen müssen. Um mehr als einen Prozess laufen zu lassen, starten Sie einfach jede Minute mehrere Cron-Prozesse:


<div style="margin-left:1cm;margin-right:1cm;">In diesem Beispiel wird das Ergebnis abgelegt (nach /dev/null).</div>
* * * * * /usr/bin/php /path/to/moodle/admin/cli/cron.php
* * * * /usr/bin/php /pfad/zu/moodle/admin/cli/cron.php * * * * * /usr/bin/php /pfad/zu/moodle/admin/cli/cron.php
* * * * * /usr/bin/php /pfad/zu/moodle/admin/cli/cron.php
* * * * * /usr/bin/php /pfad/zu/moodle/admin/cli/adhoc_task.php --execute --keep-alive=59
* * * * * /usr/bin/php /pfad/zu/moodle/admin/cli/adhoc_task.php --execute --keep-alive=59
* * * * * /usr/bin/php /pfad/zu/moodle/admin/cli/adhoc_task.php --execute --keep-alive=59


<div style="margin-left:1cm;margin-right:1cm;">Das gleiche mit lynx:</div>
Es kann besonders wichtig sein, die Anzahl der adhoc_task.php-Prozesse zu erhöhen, da bestimmte Plugins und Systeme eine sehr große Anzahl von Ad-hoc-Aufgaben oder Aufgaben erzeugen können, deren Bearbeitung viel Zeit in Anspruch nehmen kann. Insbesondere Aufgaben wie Dokumentenkonvertierungen und automatisierte Backups können sich schneller ansammeln als sie bearbeitet werden, wenn sie auf den Standardeinstellungen belassen werden.


lynx -dump http://example.com/moodle/admin/cron.php > /dev/null
Standardmäßig können nur 3 geplante Aufgaben und 3 Ad-hoc-Aufgaben gleichzeitig ausgeführt werden. Wenn Sie weitere Prozesse hinzufügen, müssen Sie die zulässige Gleichzeitigkeit erhöhen:


<div style="margin-left:1cm;margin-right:1cm;">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.</div>
Site-Administration > Server > Tasks > Task-Verarbeitung


/opt/bin/php /web/moodle/admin/cron.php
Oder in <code>config.php</code>:
 
(Windows) C:\apache\php\php.exe C:\apache\htdocs\moodle\admin\cron.php
 
==== Automatische Ausführung des Skripts alle 5 Minuten ====
 
<div style="margin-left:1cm;margin-right:1cm;">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:</div>
 
<nowiki>*/5 * * * * wget -q -O /dev/null http://example.com/moodle/admin/cron.php</nowiki>
 
<div style="margin-left:1cm;margin-right:1cm;">Bei Windows-Systemen: Der einfachste Weg ist hier mein Programm zu benutzen, [http://moodle.org/download/moodle-cron-for-windows.zip moodle-cron-for-windows.zip] wodurch die Anpassungen ganz einfach sind. Sie können alternativ dazu, die in Windows enthaltene Funktion "Scheduled Tasks" benutzen.</div>
 
<div style="margin-left:1cm;margin-right:1cm;">'''Bei Web Hosting Services'''</div>
 
<div style="margin-left:1cm;margin-right:1cm;">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. </div>
 
==== Kommando-Zeile von Unix nutzen  ====
 
<div style="margin-left:1cm;margin-right:1cm;">Es gibt verschiedene Kommandozeilenprogramme, die Sie aufrufen können. Auf Ihrem Server sind vielleicht nicht alle verfügbar.</div>
 
<div style="margin-left:1cm;margin-right:1cm;">Z.B. das Unix-Utility 'wget':</div>
 
wget -q -O /dev/null http://example.com/moodle/admin/cron.php
 
<div style="margin-left:1cm;margin-right:1cm;">In diesem Beispiel wird das Ergebnis nicht aufgewahrt (to /dev/null).</div>
 
<div style="margin-left:1cm;margin-right:1cm;">Das gleiche unter lynx:</div>
 
lynx -dump http://example.com/moodle/admin/cron.php > /dev/null
 
<div style="margin-left:1cm;margin-right:1cm;">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.</div>
 
/opt/bin/php /web/moodle/admin/cron.php
 
   
 
==== Verwendung des crontab Programms auf Unix  ====
 
<div style="margin-left:1cm;margin-right:1cm;">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:</div>
 
crontab -e
 
<div style="margin-left:1cm;margin-right:1cm;">and then adding one of the above commands like:</div>
 
<nowiki>*/5 * * * * wget -q -O /dev/null http://example.com/moodle/admin/cron.php</nowiki>


<div style="margin-left:1cm;margin-right:1cm;">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).</div>
<syntaxhighlight lang="php">
$CFG->task_scheduled_concurrency_limit = 20; // Standardwert ist 3
$CFG->Aufgabe_adhoc_Währungsbeschränkung = 50; // Standardmäßig 3
</syntaxhighlight>


<div style="margin-left:1cm;margin-right:1cm;">&nbsp;</div>
Wie auch immer Sie diese Werte setzen, stellen Sie sicher, dass der/die Server, die sie hosten, diese Anzahl von Prozessen bequem verarbeiten können. Oft ist der Engpass ein gemeinsam genutzter Dienst, normalerweise die Datenbank.


=== 7. Einen neuen Kurs anlegen ===
Es kann vorkommen, dass bestimmte Arten von sehr lang laufenden Aufgaben alle verfügbaren Aufgabenprozesse aufbrauchen, was bedeutet, dass keine anderen Aufgaben ausgeführt werden können. Wenn Sie z. B. 5 Cli-Prozesse haben, aber in der Aufgabenwarteschlange 20 Ad-hoc-Aufgaben für eine automatische Sicherung stehen, von denen jede zehn Minuten dauert, dann werden sehr schnell alle 5 Prozesse von den Sicherungen aufgebraucht und nichts anderes. Andere kleine, sehr schnelle und leichte Aufgaben wie eine Dokumentenkonvertierung oder Foren-E-Mails werden nicht gesendet, bis die Backups abgeschlossen sind und ein Prozess frei wird. Um dies zu steuern, können Sie die Gleichzeitigkeit bestimmter Arten von Ad-hoc-Aufgaben begrenzen. Eine gute Faustregel ist, dass Sie, wenn alle "schweren" Aufgaben ihre eigenen Limits ausschöpfen, immer noch ein paar andere Prozesse im Leerlauf haben sollten, die auf alles andere warten, was der Warteschlange hinzugefügt werden könnte.


<div style="margin-left:1cm;margin-right:1cm;">Wenn alle Einstellungen vorgenommen wurden, sollte diese Moodle-Seite einsatzfähig sein und Sie können einen Kurs erstellen.</div>
Automated backups are the worst known offender, so hypothetically if you are running 50 ad hoc task processes concurrently a reasonable restriction might be to cap the backups to consume no more than half of those processes, i.e. 25 at most:


<div style="margin-left:1cm;margin-right:1cm;">Wählen Sie "Neuen Kurs anlegen" auf der Administrationsseite ( oder über den Link im Administrationsmenü auf der Hauptseite).</div>
In <code>config.php</code>:


<div style="margin-left:1cm;margin-right:1cm;">Legen Sie die Grundeinstellungen fest. Achten Sie dabei bitte besonders auf das Kursformat. Sie brauchen sich in dieser Stufe nicht zu intensiv mit den Details zu beschäftigen, da alle diese Einstellungen später durch den Trainer geändert werden können.</div>
<syntaxhighlight lang="php">
$CFG->task_concurrency_limit = [
    'core\task\course_backup_task' => 25,
    'core_course\task\course_delete_modules' => 5,
];
</syntaxhighlight>


<div style="margin-left:1cm;margin-right:1cm;">Über den Button "Änderungen speichern", gelangen sie auf eine neue Seite. Auf dieser Seite können Sie den Trainer für diesen Kurs zuweisen. Sie können nur Teilnehmer als Trainer zuweisen, die bereits einen Zugang zu diesem Moodle- System besitzen. Wenn ein neuer Trainerzugang eingerichtet werden soll, bitten Sie den Trainer sich selbst einen Zugang einzurichten ( Über die Anmeldeseite) oder erzeugen Sie einen neuen Zugang über das Administrationsmenü. Dort finden Sie den Link "Neuen Benutzer anlegen ".</div>


<div style="margin-left:1cm;margin-right:1cm;">Wenn dies erledigt ist, sind die Vorbereitungen abgeschlossen und der Kurs kann über den Link "Kurse" auf der Hauptseite weiter bearbeitet werden.</div>
==See also==
* [[Scheduled tasks]]
* [http://en.wikipedia.org/wiki/Cron 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:
*[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.


<div style="margin-left:1cm;margin-right:1cm;">Lesen Sie das "[https://moodle.humboldtgym.de/?file=teacher.html Trainer Handbuch]", um weitere Informationen zur Erstellung eines Kurses zu erhalten. Eine ausführliche Anleitung in deutscher Sprache finden Sie im [http://moodle.de/ Deutschen Trainerhandbuch und im Teilnehmerhandbuch Forum.]</div>
[[Kategorie:Moodle]]
[[Kategorie:Cron]]

Aktuelle Version vom 22. Januar 2024, 15:17 Uhr

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 linux:

linux -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 linux:

linux -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).

Beschreibung

Der Moodle-"cron"-Prozess ist ein PHP-Skript (Teil der Moodle-Standardinstallation), das regelmäßig im Hintergrund ausgeführt werden muss. Das Moodle-Cron-Skript führt verschiedene Aufgaben in unterschiedlichen Zeitabständen aus.

WICHTIG: Überspringen Sie nicht die Einrichtung des cron-Prozesses auf Ihrem Server für Ihr Moodle. Ohne ihn wird Ihre Website nicht richtig funktionieren.

Es wird empfohlen, den Cron jede Minute laufen zu lassen, wie es für das asynchrone Löschen von Aktivitäten bei Verwendung des Papierkorbs erforderlich ist.

Das cron-Programm (das das Moodle-Skript ausführt) ist ein zentraler Bestandteil von Unix-basierten Systemen (einschließlich Linux und OSX) und wird für die Ausführung aller Arten von zeitabhängigen Diensten verwendet. Unter Windows besteht die einfachste Lösung darin, eine Aufgabe im Windows-Taskplaner zu erstellen und sie in regelmäßigen Abständen auszuführen. Bei Shared Hosting sollten Sie in der Dokumentation nachsehen (oder den Support fragen), wie cron konfiguriert ist. Die meisten Shared-Hosting-Systeme verwenden CPanel zur Verwaltung von Websites und verfügen in der Regel über einen Abschnitt für Cron-Jobs im Panel.

Im Wesentlichen besteht die Aufgabe darin, einen einzelnen Befehl zur Liste der Cron-Aktivitäten auf Ihrem System hinzuzufügen. Auf Unix-Systemen ist diese Liste eine Datei namens 'crontab', die alle Benutzer haben.

Allgemeine Diskussion

Siehe die späteren Abschnitte für Ihren Servertyp; dieser Abschnitt enthält einige allgemeine Hintergrundinformationen.

Bei der Implementierung von cron gibt es im Wesentlichen zwei Schritte:

  1. Identifizierung des richtigen Befehls zur Ausführung
  2. den richtigen Ort auf Ihrem System finden, um den Befehl auszuführen

Ausarbeitung des Moodle cron Befehls

Moodle bietet zwei verschiedene Möglichkeiten, cron einzusetzen, die unterschiedliche Skripte innerhalb der Moodle-Installation verwenden. Diese sind wie folgt...

  1. Das CLI-Skript (Kommandozeileninterpreter). Dieses befindet sich im Pfad
    /path/to/moodle/admin/cli/cron.php
    Im Zweifelsfall ist dies das richtige Skript. Es muss von einem "PHP CLI"-Programm auf Ihrem Computer ausgeführt werden. Der endgültige Befehl könnte also etwa so aussehen:
    /usr/bin/php /path/to/moodle/admin/cli/cron.php
    Sie können (und sollten) dies auf Ihrer Kommandozeile ausprobieren, um zu sehen, ob es funktioniert. WARNUNG: Überprüfen Sie, ob die PHP-Version auf der Kommandozeile mit der von Ihnen gewählten Moodle-Version kompatibel ist. Das Kommandozeilen-PHP-Programm unterscheidet sich von dem, das auf Ihrer Website läuft, und ist nicht immer die gleiche Version.
  2. Wenn Sie das CLI-Skript aus irgendeinem Grund nicht ausführen können, gibt es das webbasierte Skript. Beachten Sie, dass dieses Skript jetzt veraltet ist und in zukünftigen Versionen entfernt werden könnte. Es muss über einen Webbrowser ausgeführt werden und wird über eine Web-URL wie http://your.moodle.site/admin/cron.php aufgerufen. Es gibt auch kommandozeilenbasierte Webbrowser (z.B. wget), so dass der endgültige Befehl wie
    /usr/bin/wget http://your.moodle.site/admin/cron.php
    aussehen kann. Wenn Sie cron auf Ihrem Rechner nicht zum Laufen bekommen, können Sie es auch woanders ausführen.

Der webbasierte Moodle-Cron-Befehl

  • Wenn Sie die Wahl haben, verwenden Sie nicht den webbasierten Cron-Befehl. Er wird wahrscheinlich in einer zukünftigen Moodle-Version entfernt werden.
  • Ab Moodle 2.9 kann der Cron-Job standardmäßig nicht mehr über das Web ausgeführt werden. Sie werden eine Fehlermeldung erhalten:
!!! Sorry, der Internetzugang zu dieser Seite wurde vom Administrator gesperrt. !!! 
  • Sie können dies unter ' Dashboard ► Site administration ► Security ► Site policies ' ändern, indem Sie die Option 'Cron execution via command line only' deaktivieren.
    • Sie werden gewarnt, dass die Ausführung des Cron von einem Webbrowser aus privilegierte Informationen für anonyme Benutzer preisgeben kann. Es wird daher empfohlen, den Cron nur über die Befehlszeile auszuführen oder ein Cron-Passwort für den Fernzugriff festzulegen.'
    • Sie können dann ein 'Cron-Passwort für den Fernzugriff' eingeben. Wenn Sie dieses Feld leer lassen, ist kein Passwort erforderlich.
    • Dies bedeutet, dass das Skript cron.php nicht von einem Webbrowser aus ausgeführt werden kann, ohne dass das Kennwort in der folgenden Form der URL angegeben wird:
 http://site.example.com/admin/cron.php?password=opensesame

Den richtigen Ort für die Eingabe des Befehls finden

Dies hängt wirklich von dem System ab, das Sie verwenden, und Sie sollten die Dokumentation für Ihre Plattform oder Ihr Hosting finden und lesen. In den meisten Fällen besteht die Ausführung von Moodle cron darin, dass Sie den richtigen Befehl (siehe oben) festlegen und ihn dann zusammen mit der Zeit, zu der der Befehl ausgeführt werden soll, in eine Art Datei eintragen. Dies kann entweder über eine spezielle Benutzeroberfläche oder durch direkte Bearbeitung der Datei geschehen.

Wenn Sie die CLI-Version verwenden, müssen Sie auch sicherstellen, dass der Cron-Prozess als der richtige Benutzer ausgeführt wird. Dies ist bei der Web-Version nicht der Fall.

Beispiel... Installation von cron auf Ubuntu/Debian Linux. Angenommen, Sie sind als root eingeloggt...

Verwenden Sie den Befehl crontab, um ein Crontab-Editorfenster für den Benutzer www-data zu öffnen. Dies ist der Benutzer, unter dem Apache (der Webserver) auf Debian-basierten Systemen läuft

$ crontab -u www-data -e

Dadurch wird ein Editorfenster geöffnet. Um das cli cron-Skript alle 1 Minute laufen zu lassen, fügen Sie die Zeile:

* * * * * /usr/bin/php /path/to/moodle/admin/cli/cron.php >/dev/null

HINWEIS: Das abschließende >/dev/null sendet alle Ausgaben in den 'bin' und verhindert, dass Sie alle 1 Minute eine E-Mail erhalten.

cron auf Ihrem System einrichten

Wählen Sie die Informationen für Ihren Servertyp aus:

Hier sind einige weitere Anleitungen für bestimmte Hosts (bitte prüfen Sie, ob diese aktuell sind):

Verwendung eines Cron-Dienstes eines Drittanbieters

Neben der Verwendung von Cron, das auf Ihrem eigenen Server gehostet wird, können Sie auch Cron-Dienste von Drittanbietern verwenden (normalerweise webcron genannt):

  • cron-job.org ist ein kostenloser Dienst. (1Minute cron ist möglich)
  • EasyCron - Ein Webcron-Dienstleister, der die Notwendigkeit von crontab oder anderen Aufgabenplanern zum Einrichten von Cron-Jobs eliminiert.
  • WebCron - Ein kostenloser und einfacher Webcron-Dienstleister.

Cron-Einstellungen in Moodle

Ein Administrator kann die Cron-Ausführung nur über die Kommandozeile oder ein Cron-Passwort für den Fernzugriff in den "Sicherheitseinstellungen" der Website-Administration einstellen.

Ferngesteuerter Cron

Mit der 'webbasierten' Version von cron ist es völlig in Ordnung, den cron-Prozess auf einem anderen Rechner als dem Moodle-Server zu platzieren. Zum Beispiel kann der cron-Dienst auf einem Unix-Server die cron-Webseite auf einem Windows-basierten Moodle-Server aufrufen.

Planen von Aufgaben

Ein Administrator kann Cron-Aufgaben unter Administration > Website-Verwaltung > Server > Geplante Aufgaben sehr genau planen, siehe Geplante Aufgaben

Cron für mehrere Moodle-Server laufen lassen

  • Die Aufgaben können parallel laufen und die Prozesse verwenden Sperren, um zu verhindern, dass Aufgaben zur gleichen Zeit laufen, was es ermöglicht, Cron von mehreren Webservern aus zu starten, die dieselbe Moodle-Instanz bedienen.
  • Wenn Sie verschiedene Moodle-Instanzen auf demselben Server betreiben, dann benötigt jede Moodle-Instanz einen Cron-Job. (Sogar ein einzelner Apache-Webserver kann verschiedene Moodle-Instanzen auf verschiedenen Domains laufen lassen, indem er seine Fähigkeit zu virtuellen Hosts nutzt https://httpd.apache.org/docs/2.2/vhosts/index.html.)

Fehlersuche bei geplanten Tasks

Manchmal kann es vorkommen, dass eine bestimmte Cron-Aufgabe nicht richtig funktioniert. In Moodle-Versionen vor 2.7 hat jede Cron-Aufgabe, die Ausnahmen auslöste, den Rest der Cron-Aufgabe am Laufen gehindert. Die einzige Möglichkeit zu überwachen, ob Cron jedes Mal abgeschlossen wurde, war eine automatische Überprüfung der Ausgabe von Cron (z.B. die Suche nach der Zeichenkette "Cron completed at ").

In Moodle 2.7 und höher verhindert eine einzelne fehlgeschlagene geplante Aufgabe nicht die Fertigstellung der übrigen Aufgaben. Wenn eine einzelne geplante Aufgabe fehlschlägt, wird sie als Fehlschlag markiert und für einen erneuten Versuch eingeplant. Wenn die Aufgabe immer wieder fehlschlägt, wird die nächste geplante Zeit verschoben, bis sie höchstens einmal alle 24 Stunden versucht wird. Auf der Geplante Aufgaben-Verwaltungsseite können Sie jedoch sehen, ob eine Aufgabe gerade fehlschlägt (sie hat eine Fehlschlagverzögerung ungleich Null - das ist die Anzahl der Sekunden, die gewartet wird, bevor eine fehlgeschlagene Aufgabe erneut versucht wird). Eine einfache Möglichkeit, eine fehlgeschlagene Aufgabe zu debuggen, besteht darin, sie sofort mit dem cli scheduled task runner auszuführen und die Ausgabe zu überwachen.

Protokollierung und Überwachung

Idealerweise sollten Sie auch die Ausgabe von cron irgendwo protokollieren und auf Probleme hin überwachen. Sie können den Gesamtstatus von cron überwachen, um sicherzustellen, dass keine Fehler vorliegen, indem Sie Folgendes besuchen:

Website-Verwaltung / Berichte / Systemstatus (/report/status/index.php)

Sie können diesen Statusbericht auch mit Tools wie Icinga / Nagios verbinden, indem Sie die Check API (https://docs.moodle.org/dev/Check_API) cli-Befehle verwenden oder mit Hilfe von Plugins wie https://github.com/catalyst/moodle-tool_heartbeat.

/admin/cli/checks.php

Wenn Fehler auftreten, können Sie weitere Details zu kürzlich ausgeführten Tasks in der Spalte "Logs" auf der Seite "Geplante Tasks" abrufen, allerdings werden dort keine Fehler bei Ad-hoc-Tasks angezeigt:

Website-Verwaltung / Server / Aufgaben / Geplante Aufgaben (/admin/tool/task/scheduledtasks.php)

Um Fehlschläge von Ad-hoc-Aufgaben zu sehen, müssen Sie die Aufgabe entweder selbst manuell ausführen und die Fehler sehen, oder Sie müssen die Logs bereits zur Überprüfung gesammelt haben. Für ein Moodle, das auf einem einzelnen Rechner läuft, könnte man in eine einfache Logdatei protokollieren, oder für einen Cluster könnte man syslogd oder ähnliches verwenden, z.B.:

 * * * * * /usr/bin/php /path/to/moodle/admin/cli/cron.php 2>&1 | /usr/bin/logger ...

Adhoc-Aufgaben mit geringer Latenz

Jedes Mal, wenn cron ausgeführt wird, werden nach den geplanten Aufgaben auch die Ad-hoc-Aufgaben ausgeführt. Während geplante Aufgaben höchstens einmal pro Minute ausgeführt werden können, können Ad-hoc-Aufgaben jederzeit in eine Warteschlange gestellt werden, und im Allgemeinen möchten Sie, dass sie so schnell wie möglich verarbeitet werden und nicht erst auf die geplante Aufgabe warten müssen. Wenn Sie nur die normale admin/cli/cron.php ausführen, kann es sein, dass sie nicht nur warten muss, um alle geplanten Aufgaben zuerst zu bearbeiten, sondern dass Sie, wenn sie bereits beendet ist, bis zur nächsten Minute warten müssen, bis cron erneut startet, um sie zu bearbeiten.

Stattdessen können Sie einen oder mehrere spezielle Ad-hoc-Aufgabenprozessoren laufen lassen, die parallel zum Hauptprozess von cron laufen.

 * * * * * /usr/bin/php /path/to/moodle/admin/cli/adhoc_task.php --execute --keep-alive=59
 * * * * * /usr/bin/php /pfad/zu/moodle/admin/cli/adhoc_task.php --execute --keep-alive=59
...

Ab Moodle 3.9 wird die Option-keep-alive wie ein Daemon ausgeführt, d.h. wenn die Warteschlange leer ist, wird sie nicht beendet, sondern wartet darauf, dass neue Aufgaben in die Warteschlange gestellt werden, damit sie so bald wie möglich mit der Bearbeitung beginnen kann.

Cron mit mehreren Prozessen skalieren

Wenn Ihre Website wächst, werden viele der geplanten Aufgaben länger dauern, und es werden auch mehr Ad-hoc-Aufgaben in der Warteschlange stehen, die bearbeitet werden müssen. Das Cron-System ist so konzipiert, dass es parallel arbeitet, aber jeder einzelne Prozess kann nur eine Aufgabe zur gleichen Zeit bearbeiten, so dass Sie mehrere Cron-Kli's laufen lassen müssen. Sie können im Allgemeinen eine ziemlich große Anzahl von Cron-Prozessen auf einer dedizierten Cron-Instanz laufen lassen, bevor Sie mehrere Cron-Instanzen laufen lassen müssen. Um mehr als einen Prozess laufen zu lassen, starten Sie einfach jede Minute mehrere Cron-Prozesse:

* * * * * /usr/bin/php /path/to/moodle/admin/cli/cron.php
* * * * /usr/bin/php /pfad/zu/moodle/admin/cli/cron.php * * * * * /usr/bin/php /pfad/zu/moodle/admin/cli/cron.php
* * * * * /usr/bin/php /pfad/zu/moodle/admin/cli/cron.php
⋮
* * * * * /usr/bin/php /pfad/zu/moodle/admin/cli/adhoc_task.php --execute --keep-alive=59
* * * * * /usr/bin/php /pfad/zu/moodle/admin/cli/adhoc_task.php --execute --keep-alive=59
* * * * * /usr/bin/php /pfad/zu/moodle/admin/cli/adhoc_task.php --execute --keep-alive=59
⋮

Es kann besonders wichtig sein, die Anzahl der adhoc_task.php-Prozesse zu erhöhen, da bestimmte Plugins und Systeme eine sehr große Anzahl von Ad-hoc-Aufgaben oder Aufgaben erzeugen können, deren Bearbeitung viel Zeit in Anspruch nehmen kann. Insbesondere Aufgaben wie Dokumentenkonvertierungen und automatisierte Backups können sich schneller ansammeln als sie bearbeitet werden, wenn sie auf den Standardeinstellungen belassen werden.

Standardmäßig können nur 3 geplante Aufgaben und 3 Ad-hoc-Aufgaben gleichzeitig ausgeführt werden. Wenn Sie weitere Prozesse hinzufügen, müssen Sie die zulässige Gleichzeitigkeit erhöhen:

Site-Administration > Server > Tasks > Task-Verarbeitung

Oder in config.php:

$CFG->task_scheduled_concurrency_limit = 20; // Standardwert ist 3
$CFG->Aufgabe_adhoc_Währungsbeschränkung = 50; // Standardmäßig 3

Wie auch immer Sie diese Werte setzen, stellen Sie sicher, dass der/die Server, die sie hosten, diese Anzahl von Prozessen bequem verarbeiten können. Oft ist der Engpass ein gemeinsam genutzter Dienst, normalerweise die Datenbank.

Es kann vorkommen, dass bestimmte Arten von sehr lang laufenden Aufgaben alle verfügbaren Aufgabenprozesse aufbrauchen, was bedeutet, dass keine anderen Aufgaben ausgeführt werden können. Wenn Sie z. B. 5 Cli-Prozesse haben, aber in der Aufgabenwarteschlange 20 Ad-hoc-Aufgaben für eine automatische Sicherung stehen, von denen jede zehn Minuten dauert, dann werden sehr schnell alle 5 Prozesse von den Sicherungen aufgebraucht und nichts anderes. Andere kleine, sehr schnelle und leichte Aufgaben wie eine Dokumentenkonvertierung oder Foren-E-Mails werden nicht gesendet, bis die Backups abgeschlossen sind und ein Prozess frei wird. Um dies zu steuern, können Sie die Gleichzeitigkeit bestimmter Arten von Ad-hoc-Aufgaben begrenzen. Eine gute Faustregel ist, dass Sie, wenn alle "schweren" Aufgaben ihre eigenen Limits ausschöpfen, immer noch ein paar andere Prozesse im Leerlauf haben sollten, die auf alles andere warten, was der Warteschlange hinzugefügt werden könnte.

Automated backups are the worst known offender, so hypothetically if you are running 50 ad hoc task processes concurrently a reasonable restriction might be to cap the backups to consume no more than half of those processes, i.e. 25 at most:

In config.php:

$CFG->task_concurrency_limit = [
    'core\task\course_backup_task' => 25,
    'core_course\task\course_delete_modules' => 5,
];


See also

Forum discussions: