Cronjob (Geplante Aufgabe)
Geplante Aufgaben werden in bestimmten zeitlichen Abständen ausgeführt. Sie dienen der kontinuierlichen Verarbeitung von Daten. Ein Cronjob wird als Komponente angelegt. Erstellen Sie hierzu die Datei Cron.php
in dem Ordner Components
eines beliebigen Moduls. Die darin befindliche Klasse Cron
muss die Methode execute()
besitzen. Diese wird automatisch durch den zugehörigen Component-Loader ausgeführt, wenn die Zeit-gesteuerten Aufgaben ausgeführt werden.
Zeitsteuerung
Die Klasse Cron_model
aus dem Namespace Modules\CRM_Core\Models
enthält Methoden zur Zeitsteuerung. Diese Zeitsteuerung wird benötigt, wenn der Job nicht mit jeder Ausführung der Zeit-gesteuerten Aufgaben, sondern zeitversetzt ausgeführt werden sollen.
Aufgabe registrieren
Jede neue Aufgabe muss zunächst registriert werden. Die Methode addCronTask(array $data): int
fügt eine neue Aufgabe zur Datenbank hinzu und gibt die ID der neuen Aufgabe zurück.
<?php
$cronModel = new Cron_model();
$cronModel->addCronTask([
'cron_task' => 'Sample',
'execution_period' => 5,
]);
Aufgabe updaten
Eine Aufgabe kann durch den Aufruf der Methode updateCronTask(int $id, array $data): int
verändert werden. Die Methode verändert die Daten der Aufgabe in der Datenbank und gibt die ID der Aufgabe zurück.
<?php
$cronModel = new Cron_model();
$cronModel->updateCronTask(3, [
'execution_period' => 15,
]);
Aufgabe löschen
Eine Aufgabe kann durch den Aufruf der Methode deleteCronTask(int $id): bool
aus der Datenbank entfernt werden (z.B. wenn ein Modul inkl. seiner Cron-Komponente aus dem System gelöscht wird).
<?php
$cronModel = new Cron_model();
$cronModel->deleteCronTask(3);
Aufgabe auf nächste Ausführung prüfen
Aufgaben können auf eine mögliche nächste Ausführung geprüft werden. Wurde die Aufgabe vor weniger als der in execution_period angegebenen Anzahl an Minuten bereits ausgeführt, so gibt die Methode cronTaskCanExecute(string $name): bool
false
zurück.
<?php
$cronModel = new Cron_model();
if ($cronModel->cronTaskCanExecute('Sample')) {
//TODO: Implement cronjob functionality for "Sample" module
}
Cron.php
Herunterladen: Cron.php
<?php
namespace Modules\Core\Components;
use Modules\CRM_Core\Models\Cron_model;
/**
* Class Cron
*
* Module specific implementation of cronjob method. Implemented
* respectively for the "Sample" module of the application.
*/
class Cron
{
private $manager;
public function __construct()
{
$this->manager = new Cron_model();
}
/**
* Function called upon cronjob execution.
*/
public function execute()
{
if ($this->manager->cronTaskCanExecute('Sample')) {
//TODO: Implement cronjob functionality for "Sample" module
}
}
}