TYPO3-Extension Taskqueue: Rechenintensive Prozesse asynchron im CMS managen

...oder Was Du später kannst besorgen, das verschiebe ruhig auf morgen! Die TYPO3-Extension Taskqueue hilft dabei, zeit- und rechenintensive Prozesse wie z.B. das Generieren von PDFs aus Formularen oder den Versand von E-Mails ressourcenschonend auszuführen. In unserem Blogpost erfahrt ihr mehr.

In der PHP (bzw. Script)-Welt gibt es u.a. ein wiederkehrendes Problem: Wie gehen wir mit rechen- und zeitintensiven Aufgaben um? Wie lange lassen wir den User auf ein Ergebnis warten, bzw. können gewisse Aufgaben überhaupt innerhalb einer Anfrage abgearbeitet werden?

Asynchrones Abarbeiten von Aufgaben in PHP: vom Problem zur Lösung

Ein Beispiel:
Nach dem Abschicken eines Formulars durch den User wird aus den gemachten Angaben ein PDF generiert, dieses wird noch Signiert und mit Bildern aufgehübscht. Nehmen wir mal an, dieser Prozess dauert zwei Minuten pro PDF.

Der normale PHP-Weg wäre nach dem Abschicken des Formulars einfach das PDF zu generieren. Das hätte aber zur Folge, dass der User bei geöffnetem Browserfenster zwei Minuten warten müsste. Und was passiert, wenn er das nicht tut, z.B. den Tab schließt etc.?

Bei nicht Script-Sprachen wie, z.B. Java ist dieses Problem nicht vorhanden, da die Applikation immer im Speicher vorhanden ist und nicht nur pro Request.

Es macht also Sinn, auch in PHP gewisse Aufgaben asynchron abzuarbeiten.

Zum Beispiel so:
Es wird eine Aufgabe (z.B. PDF generieren, signieren und Bilder anhängen, per Mail versenden) erstellt und z.B. in der Datenbank abgespeichert. Das geht sehr schnell und der User muss nicht warten.
Zu einem späteren Zeitpunkt wird genau diese Aufgabe z.B. per Cronjob aus der Datenbank geholt und abgearbeitet. Davon bekommt der User nichts mit und ihm ist es auch egal, ob die Email mit dem PDF in zwei oder fünf Minuten bei ihm ankommt, solange sie ankommt und er nicht im Browser warten muss.

Für diese Aufgabe gibt es natürlich viele Lösungen z.B. rabbitmq oder andere Message Bus Systeme.

Die Extension Taskqueue

Wir wollten aber eine Lösung haben, die keine weiteren Anforderungen an den Server stellt und sich gut in TYPO3 integrieren lässt.

Dazu haben wir schon 2014 eine Extension geschrieben (Taskqueue), die genau diese Funktionalität liefert und in vielen unserer Extensions Verwendung findet. u.a. cute_mailing. Die Extension richtet sich an Entwickler, die genau vor dem oben beschriebenen Problem stehen.

Die Extension Taskqueue ähnelt dem neu eingeführten Message bus von TYPO3, bietet aber ein Backend Interface. Sie wird bei uns zum Beispiel im cute_mailing eingesetzt zum Versand der Newsletter/Mails.

Taskqueue bietet:

  • Kompatibel mit TYPO3 12.4

  • Einfaches Interface für Extension-Entwickler zur Verwendung der Taskqueue

  • Backend Interface zum Anzeigen und Verwalten der Tasks

  • Scheduler Commands zum Abarbeiten der Tasks durch den TYPO3 Scheduler

Weiterführende Links


Kommentare

Keine Kommentare


Kommentar schreiben

* Diese Felder sind erforderlich