Skip to content

Tasks

Ein Task ist ein isolierbarer Arbeitsschritt der Anwendungslogik ohne Rückgabewert, zum Beispiel das Versenden einer E-Mail. Durch das Auslagern solcher Aufgaben in eigene Klassen wird die Übersichtlichkeit des Codes erhöht.

Eine Besonderheit von Tasks ist, dass sie als eigenständige PHP-Prozesse parallelisiert werden können. Dadurch können zeitaufwendige Aufgaben im Hintergrund laufen, ohne das Versenden der Response zu verzögern.

Zudem können Tasks durch den Scheduler automatisiert in bestimmten Intervallen ausgeführt werden oder durch die Queue kontinuierlich abgearbeitet werden.

Deklaration

Tasks liegen im Ordner app/Tasks und erben von RHRZ\Framework\Task. Es muss lediglich die Methode invoke implementiert werden. Optional kann ein Konstruktor definiert werden, der Parameter entgegennimmt.

php
namespace App\Tasks;

use RHRZ\Framework\Task;

class ExampleTask extends Task
{
    protected string $param;

    public function __construct(string $param = 'default')
    {
        $this->param = $param;
    }

    protected function invoke(): void
    {
        // ...
    }
}

Ausführen

Es gibt zwei Möglichkeiten, Tasks auszuführen.

  • run() führt den Task sequentiell im aktuellen Prozess aus.
  • exec() führt den Task parallel in einem separaten Prozess aus.
php
use App\Tasks\ExampleTask;

(new ExampleTask('param'))->run();