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.
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.
use App\Tasks\ExampleTask;
(new ExampleTask('param'))->run();