aus "Stud.IP-Entwicklerdokumentation"

Entwickler: Cronjobs

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:

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.

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:

Ü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.

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. }
URL: https://docs.studip.de/develop/Entwickler/Cronjobs
Zuletzt geändert am 03.11.2015 09:56 Uhr