Zum Inhalt springen

Modul als "Modul" ausführen oder als Task aus dem Scheduler

Erstellt am 18. Februar 2017 · 5 Antworten · letzte Antwort am 23. Februar 2017

Tags: Extbase, TYPO3 8, Frage

getit ·

Ich habe ein Modul geschrieben, das eine SOAP-Anfrage ausführt und das Ergebnis in der DB speichert.
Dieses Modul soll sowohl manuell (wie bisher also) und auch als Task aus dem Scheduler aufgerufen werden.

Wenn ich das Modul manuell starte, ruft die Action des Moduls ja das Template auf. Als Task brauche ich aber eine Action die mir true/false zurückliefert - die execute() des Task muss ein boolean zurückliefern.

Wenn ich jetzt in der indexAction() des Moduls einfach schreibe 'return true' oder (return false), bekomme ich bei der manuellen Ausführung nur noch eine weiße Seite zu sehen.

Ich bräuchte als etwas wie

public function idexAction() {
  // do something
  if (TYPO3_MODE == 'SchedulerTask') {
    return $result;
  } else {
    $this->view->assign('result', $result);
  }
}

Kann mir jemand sagen, woran ich unterscheiden kann ob das Modul als Modul oder als Task aufgerufen wurde?

jenses ·

Du könntest den BE-User abfragen und das weitere Vorgehen davon abhängig machen,
ob die Action von _cli_scheduler ausgeführt wird oder von einem anderen User.
Scheduler-Task laufen IMMER unter _cli_scheduler.

getit ·

Ich habe das jetzt so gelöst:

  • in der execute() für den Task setze ich: $GLOBALS['T3_VAR']['as'] = 'task';

  • in der 'normal' indexAction() prüfe ich diese Variable

jenses ·
Julian.Hofmann schrieb

@jenses:
Seit TYPO3 8.6 stimmt die Aussage nicht mehr: https://docs.typo3.org/typo3cms/extensions/core/8-dev/Changelog/8.6/Feature-79240-SingleCliUserForCliCommands.html

Aha, danke.
Soviel zur Zuverlässigkeit von aktuellen TYPO3-Core-Dokumentationen, markiert mit "latest" #angry#
Die letzten Jahre verbringt man immer Zeit damit,
herauszufinden, wie etwas (oder warum etwas nicht) funktioniert,
nur um festzustellen, daß die Doku wieder mal "post-faktisch" ist.

Julian.​Hofmann ·

Da stimme ich Dir zu.
Hatte das auch nur gerade im Kopf, weil ich mich beim Upgrade gewundert hatte, dass die "_cli*"-User in Upgrade-Wizard gelöscht wurden. Das wollte ich dann mal genauer wisen,w as sich da wie geändert hat.

Aber, man muss auch positiv erwähnen, dass die Changelog-Seiten inzwischen recht nützlich sind und recht gut Breaking Changes usw. auflisten. Das war früher schwieriger herauszufinden und nachzuvollziehen.

Glaube, an den Dokus kann inzwischen jeder mitschreiben udn sie aktuell(er) halten ;P