Skip to content

Geplante Aufgaben

Doggy verfügt über ein integriertes System für geplante Aufgaben auf Basis eines benutzerdefinierten TaskScheduler + Symfony Messenger mit Unterstützung für verteilte Ausführung und verschiedene Aufgabentypen.

Übersicht

Das System für geplante Aufgaben befindet sich unter src/Service/Task/:

src/Service/Task/
├── TaskHandlerInterface.php   # 任务处理器接口
├── TaskHandlerLocator.php     # 处理器定位器
└── TaskScheduler.php          # 调度器

Die zugehörigen Entitäten befinden sich unter src/Entity/System/:

EntitätBeschreibung
Task.phpAufgabendefinition (Cron, Handler, Parameter)
TaskLog.phpAusführungsprotokoll der Aufgaben

Geplante Aufgabe erstellen

1. Aufgaben-Handler implementieren

php
namespace App\Task;

use App\Service\Task\TaskHandlerInterface;

class ActivateAccountByHireDateTask implements TaskHandlerInterface
{
    public function handle(array $params = []): void
    {
        // 执行业务逻辑
    }
}

Beispiel für eine vorhandene Aufgabe: src/Task/ActivateAccountByHireDateTask.php

2. Aufgabe registrieren

Registrierung über die Datenbank oder den Befehl:

bash
php bin/console app:run-scheduler

Planung und Ausführung

Mechanismus von TaskScheduler:

  • Liest die Task-Konfiguration aus der Datenbank
  • Parst Cron-Ausdrücke
  • Lokalisiert den Handler über TaskHandlerLocator
  • Führt über Symfony Messenger asynchron aus (RunTaskMessage + RunTaskMessageHandler)
  • Das Ausführungsergebnis wird in TaskLog aufgezeichnet

Nachrichtenarchitektur

TaskScheduler → 发送 RunTaskMessage

Messenger (Doctrine Transport)

RunTaskMessageHandler → TaskHandlerInterface::handle()

TaskLog 记录执行结果

Verwaltungsoberfläche

Einstieg: App\Controller\Admin\TaskController

Template: templates/admin/task/index.html.twig

  • Aufgabenliste ansehen
  • Ausführungsprotokolle ansehen
  • Manuelles Auslösen der Ausführung

Funktionen

  • Planung über Cron-Ausdrücke
  • Asynchrone Ausführung (Messenger-Nachrichtenwarteschlange)
  • Verfolgung des Ausführungsstatus (TaskLog)
  • Wiederholungsmechanismus bei Fehlern
  • Erweiterbare Handler-Schnittstelle

Open Source unter MIT | Copyright © 2026 Doggy