SideBarMenu

Cronjobs

Auf dieser Seite... (ausblenden)

  1.   1.  Einleitung
  2.   2.  Anatomie
    1.   2.1  Vollständiges Beispiel
    2.   2.2  Grundlagen
    3.   2.3  setup() / teardown()
    4.   2.4  execute()
    5.   2.5  Parameter
  3.   3.  Registrieren/Installation eines Cronjobs

§

1.  Einleitung

Um Cronjobs nutzen zu können, müssen sie entsprechend installiert werden. Die Installationsanleitung gibt dazu ausführlich Auskunft.

Zu beachten sind bei der Cronjob-Erstellung mindestens zwei Probleme:

  • Das Cronjob-Skript auf CLI-Ebene wird ggf. unter einer anderen Nutzerkennung ausgeführt als die Skripte über die Weboberfläche. Dies kann zu Seiteneffekten bei bestimmten Operationen wie zum Beispiel bei Dateien führen.
  • Nicht jedes Cache-Modul ist auch auf CLI-Ebene verfügbar. Dies führt dazu, dass Klassen sich unterschiedlich verhalten können, wenn sie über die Weboberfläche oder über einen Cronjob ausgeführt werden. Sollten sich Inhalte scheinbar nicht ändern, prüfen Sie den Zustand in der Datenbank und falls dort Unterschiede zur Weboberfläche festzustellen sind, ist bestimmt ein Cache im Spiel. Prüfen Sie in diesem Zusammenhang auch die Einstellung CACHING_ENABLE in der Datei cli/studip_cli_env.inc.php. Eventuell kann der Cache auf CLI-Ebene aktiviert werden, aber das hängt von dem verwendeten Tool ab.

Seit Stud.IP Version 3.3 hat sich das im letzten Punkt angesprochene Verhalten verbessert, da das Caching über einen speziellen Cache-Proxy konsistenter im CLI-Modus und im Webmodus arbeitet. Es können aus dem CLI-Modus Werte gelöscht werden. Das Auslesen aus dem Cache ist allerdings immer noch nicht unbedingt gewährleistet.

↑ Inhaltsverzeichnis

§

2.  Anatomie

§

2.1  Vollständiges Beispiel

  1. <?php
  2. class ExampleCronjob extends CronJob
  3. {
  4.     public static function getName()
  5.     {
  6.         return _('Beispiel');
  7.     }
  8.  
  9.     public static function getDescription()
  10.     {
  11.         return _('Beispiel Cronjob, der nichts macht');
  12.     }
  13.  
  14.     public static function getParameters()
  15.     {
  16.         return array(
  17.             'verbose' => array(
  18.                 'type'        => 'boolean',
  19.                 'default'     => false,
  20.                 'status'      => 'optional',
  21.                 'description' => _('Sollen Ausgaben erzeugt werden'),
  22.             ),
  23.         );
  24.     }
  25.  
  26.     public function setUp()
  27.     {
  28.     }
  29.  
  30.     public function execute($last_result, $parameters = array())
  31.     {
  32.         do_something();
  33.     }
  34.  
  35.     public function tearDown()
  36.     {
  37.     }
  38. }

§

2.2  Grundlagen

§

2.3  setup() / teardown()

§

2.4  execute()

§

2.5  Parameter

Gültige Parameter-Typen sind die folgenden:

  • boolean
  • string (1-zeiliger Text)
  • text (mehrzeiliger Text)
  • integer
  • select (die gültigen Werte werden in dem separaten Feld values definiert

Über das Feld default kann ein Standardwert angegeben werden, während über das Feld status angegeben wird, ob der Parameter zwingend erforderlich (mandatory) oder optional (optional) ist. In dem Feld description kann eine Beschreibung für den Parameter mitgegeben werden, der bei der Konfiguration des Cronjobs angezeigt wird.

↑ Inhaltsverzeichnis

§

3.  Registrieren/Installation eines Cronjobs

  1. <?php
  2. class CronjobMigration extends Migration
  3. {
  4.     const FILENAME = 'lib/cronjobs/example_cronjob.php';
  5.  
  6.     function up()
  7.     {
  8.         $task_id = CronjobScheduler::registerTask(self::FILENAME, true);
  9.  
  10.         // Schedule job to run 1 minute from now
  11.         CronjobScheduler::scheduleOnce($task_id, strtotime('+1 minute'));
  12.  
  13.         // Schedule job to run every day at 23:59
  14.         CronjobScheduler::schedulePeriodic($task_id, 23, 59);
  15.     }
  16.  
  17.     function down()
  18.     {
  19.         $task_id = CronjobTask::findOneByFilename(self::FILENAME)->task_id;
  20.         CronjobScheduler::unregisterTask($task_id);
  21.     }
  22. }

Ab Stud.IP 3.4 kann dieser Vorgang erheblich vereinfacht werden:

  1. <?php
  2. require_once '../classes/example_cronjob.php'; // Contains ExampleCronjob
  3.  
  4. class CronjobMigration extends Migration
  5. {
  6.  
  7.     public function up()
  8.     {
  9.         ExampleCronjob::register()->schedulePeriodic(23, 59)->activate();
  10.     }
  11.  
  12.     public function down()
  13.     {
  14.         ExampleCronjob::unregister();
  15.     }
  16. }

↑ Inhaltsverzeichnis

Letzte Änderung am 03.11.2015 09:56 Uhr von mlunzena.