Wie verwaltet man Cron-Jobs mit TYPO3 Scheduler?

Sind Sie auf der Suche nach Wissen über den TYPO3-Scheduler? Sie sind an der richtigen Stelle gelandet; In diesem Blog-Beitrag finden Sie Anfänger- bis Fortgeschrittenen-Kenntnisse über TYPO3-Scheduler-Tasks, Symfony-Konsolenbefehle und TYPO3-Cronjobs etc.

Wie verwaltet man Cron-Jobs mit TYPO3 Scheduler?

FYI. This blog is translated by machine. Please ignore any spelling and grammar errors; sorry for such inconvenience. We appreciate your understanding and support.

Sind Sie auf der Suche nach Wissen über den TYPO3 Scheduler? Dann sind Sie hier richtig. In diesem Blog-Beitrag finden Sie Kenntnisse für Anfänger und Fortgeschrittene zu TYPO3 Scheduler-Aufgaben, Symfony-Konsolenbefehlen und TYPO3-Cron-Jobs etc.

TYPO3 hat seit mehr als 20 Jahren einen eingebauten Scheduler bzw. eine Planer-Funktion - ich bin wirklich stolz darauf, Teil eines so fantastischen TYPO3 CMS zu sein. Glücklicherweise ist es so einfach, den TYPO3 Scheduler zu konfigurieren und zu verwenden, um Aufgaben zu automatisieren. Soweit ich weiß, hat kein anderes Opensource-CMS einen solchen Zeitplan innerhalb des Kerns.

Und... Liebe TYPO3-Leser, als mein Start-up-Ritual möchte ich diesen Blog dem Erstentwickler Christian, Markus, dem TYPO3-Kernteam und der Community widmen, die ein so hervorragendes TYPO3 Scheduler-Feature entwickelt und gepflegt haben. #T3Kudos

Seit TYPO3 v9 ist der TYPO3 Scheduler Task noch potenter, da TYPO3 mit dem Symfony-Framework zusammenarbeitet und eine fantastische Symfony-Konsolenbefehlskomponente verwendet. Das ist eines der großartigen Beispiele, was erreicht werden kann, wenn sich zwei riesige Open Source Frameworks treffen und zusammenarbeiten.

Wenn Sie ein Neuling sind, ist TYPO3 Scheduler eine der zentralen TYPO3-Erweiterungen, um wiederkehrende Aufgaben auszuführen und durchzuführen. Hier ist das Beispiel für einige der Aufgaben;

  • Senden Sie einen Newsletter an Ihre Kunden.
  • Unnötige Bilder und Assets löschen
  • Caching und Garbage Collection entfernen
  • Regelmäßige Optimierung der MySQL-Datenbank
  • Altlasten weiter entfernen
  • usw.,

Der Scheduler stammt von der Erweiterung Gabriel ab, die ursprünglich von Christian Jul Jensen entwickelt und von Markus Friedrich weiterentwickelt wurde.

Standardmäßig ist die TYPO3 Scheduler Extension in Ihrem eingebauten TYPO3-Kern verfügbar. Manchmal kann es vorkommen, dass Ihr Administrator die TYPO3-Scheduler-Erweiterung nicht einbindet, dann können Sie sie einfach installieren und unten konfigurieren.

Composer TYPO3 Scheduler Installation

 

composer require typo3/cms-scheduler

Ohne-Composer TYPO3 Scheduler Installation

Für Ihre Standard-TYPO3-Installation sollten Sie eine eingebaute Scheduler-Erweiterung haben; aktivieren Sie sie einfach ;)

Aktivieren Sie die TYPO3 Scheduler Extension

Gehen Sie zu Admin Tools > Extensions> Aktivieren Sie die Erweiterung "Scheduler".

Konfiguration des TYPO3 Schedulers

Gehen Sie zu Admin Tools > Einstellungen >Extensions Konfiguration > scheduler

Bevor wir mit dem TYPO3-Scheduler arbeiten, wollen wir erst einmal testen, ob mit unserem TYPO3-Scheduler-Dienst alles gut funktioniert.

Gehen Sie zu System > Scheduler > Wählen Sie "Setup Check". Wenn Sie einen Fehler gefunden haben, wenden Sie sich an Ihren Systemadministrator, um ihn zu korrigieren.

Als TYPO3-Administrator sollten Sie wissen, wie man TYPO3-Scheduler, Aufgaben, Ausführung, TYPO3-Cronjob usw. verwaltet. Lassen Sie uns einen kurzen Blick auf den TYPO3-Scheduler-Task "Testlauf" werfen.

Erstellen eines TYPO3-Scheduler-Tasks

Schritt 1. Gehen Sie zu System > Scheduler > Wählen Sie "Information" aus der Dropdown-Liste.

Schritt 2. Klicken Sie auf die Schaltfläche "+" der "Scheduler-Testaufgabe".

Schritt 3. Füllen Sie alle notwendigen Felder wie Typ, Häufigkeit, E-Mail, etc. aus.

Schritt 4. Klicken Sie auf die Schaltfläche "Speichern & Schließen".

TYPO3 Scheduler Task manuell ausführen/starten

Schritt 1. Gehen Sie zu System > Scheduler > Scheduled Tasks

Schritt 2. Klicken Sie auf die Wiedergabetaste "Run Task".

Schritt 3. Der TYPO3 Scheduler sollte erfolgreich laufen. Jetzt ist es an der Zeit, die E-Mail zu prüfen ;)

Juhu! Wir haben die E-Mail mit der Testaufgabe des TYPO3-Schedulers erhalten, und das bedeutet, dass unser TYPO3-Scheduler gut funktioniert.

TYPO3 Scheduler Task manuell stoppen

Schritt 1. Gehen Sie zu System > Scheduler > Scheduled Tasks

Schritt 2. Klicken Sie auf die Schaltfläche "Scheduler stoppen".

Organisieren der TYPO3 Scheduler Aufgaben Gruppe

Wenn Sie viele TYPO3-Scheduler-Aufgaben haben, hat TYPO3 eine innovative Funktion, um alles in verschiedenen Gruppen zu organisieren.

Es ist mühelos; Sie müssen nur "Task Group" zu jeder TYPO3 Scheduler-Aufgabe hinzufügen und zuweisen.

Nun, Sie haben die Backend-Verwaltung des TYPO3-Schedulers, aber das endet nicht mit dem TYPO3-Scheduler ;) Viele Leute denken, dass TYPO3 den wiederkehrenden nächsten Cron übernimmt, aber das ist nicht wahr.

Grundlagen TYPO3 Scheduler Befehl auf CLI

Sie müssen TYPO3 Cronjob auf Ihrem Server konfigurieren, um die wiederkehrende TYPO3 Scheduler-Aufgabe auszuführen. Zunächst lernen wir die Grundlagen, wie TYPO3 auf der CLI (Command Line Interface) läuft.

 

// Composer based TYPO3 Setup
php vendor/bin/typo3 scheduler:run

// Without Composer Setup
php typo3/sysext/core/bin/typo3 scheduler:run

// Some server don’t directly run PHP, you should find out PHP CLI-path
which php
/usr/local/bin/php typo3/sysext/core/bin/typo3 scheduler:run

Hilfe für TYPO3 Scheduler Befehl erhalten

 

// Run this command to Get help of TYPO3 scheduler
vendor/bin/typo3 scheduler:run --help

Einzelne Aufgabe im TYPO3 Scheduler ausführen

 

// Run this command to run single task 
vendor/bin/typo3 scheduler:run --task=1

 

Mehrere Tasks im TYPO3 Scheduler ausführen

 

// Run this command to run single task 
vendor/bin/typo3 scheduler:run --task=1 --task=2

 

Erzwingen Sie die Ausführung der Aufgabe im TYPO3 Scheduler

 

// Forcefully Run this command to run single task 
vendor/bin/typo3 scheduler:run --task=1 -f

 

Debug-Task im TYPO3 Scheduler (empfehlen)

 

// Forcefully Run this command to run single task 
vendor/bin/typo3 scheduler:run --task=1 -v

Ich bin sicher, Sie kennen Server wie Apache/Nginx crontab/cronjob. Wir müssen den TYPO3-Scheduler mit einem solchen Cronjob für unseren wiederkehrenden TYPO3-Scheduler-Task verbinden.

 

// On Unix and Mac OS X

crontab -e
*/15 * * * * /usr/local/bin/php /www/typo3/sysext/core/bin/typo3 scheduler:run

// Another way - make sure to add “www” user
/etc/crontab and /etc/cron.d/\*
*/15 * * * * www /usr/local/bin/php /www/typo3/sysext/core/bin/typo3 scheduler:run

// On Windows
schtasks /create /sc minute /mo 15 /tn "T3scheduler" /tr "c:\winstaller\php\php.exe c:\winstaller\htdocs\quickstart\typo3\sysext\core\bin\typo3 scheduler:run"

 

Kennen Sie das bekannte Problem?

Derzeit besteht das Hauptproblem darin, dass ein laufender Task nicht beendet werden kann, weil keine Beziehung zu dem (cron) Prozess besteht, der den Scheduler ausführt. Die Prozess-PID könnte abgerufen werden, aber das funktioniert möglicherweise nicht auf allen Plattformen. Und kann der Prozess danach noch beendet werden? Wie auch immer, es ist möglicherweise nicht sicher, das zu tun.

Für eine optimierte TYPO3-Installation empfehle ich Ihnen, unten den Standard-TYPO3-Scheduler zu konfigurieren, der Ihre TYPO3-Instanz ordentlich und sauber hält.

  • Caching-Framework Garbage Collection (Scheduler)
  • Fileadmin Garbage Collection (Zeitplaner)
  • Tabelle Garbage Collection (Scheduler - sys_log)
  • Tabelle Garbage Collection (Scheduler - sys_history)

TYPO3 verwendet die Symfony-Befehls-API zum Schreiben von CLI-Befehlen (Command Line Interface). Diese Befehle können auch über den TYPO3-Scheduler ausgeführt werden.

Sie suchen eine Schritt-für-Schritt-Anleitung, um einen eigenen TYPO3 Scheduler Task und Befehl zu erstellen? Hier geht's los?

Schritt 1. Registrieren der Symfony-Konsolenbefehle

Create typo3conf/ext/yourextension/Configuration/Services.yaml

 

services:
 _defaults:
   autowire: true
   autoconfigure: true
   public: false


 NITSAN\NsBasetheme\:
   resource: "../Classes/*"

 Vendor\Extension\Command\TestScheduler:
   tags:
     - name: "console.command"
       command: "myext:test"
       description: "An example description for a command"
       # not required, defaults to false
       hidden: false

 

Schritt 2. Scheduler Command Controller-Klasse erstellen

Create typo3conf/exte/yourextension/Classes/Command/TestScheduler.php

 

<?php
namespace Vendor\Extension\Command;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
use Symfony\Component\Console\Style\SymfonyStyle;
class TestScheduler extends Command
{
   /**
   * Configure the command by defining the name, options and arguments
   */
   protected function configure()
   {
       $this
           ->setDescription('Test Scheduler')
           ->setHelp('Description of the test scheduler')
           ->addArgument('id', InputArgument::OPTIONAL, 'id');
   }
   /**
    * Executes the command for showing sys_log entries
    *
    * @param InputInterface $input
    * @param OutputInterface $output
    * @return int error code
    */
   protected function execute(InputInterface $input, OutputInterface $output)
   {
       $io = new SymfonyStyle($input, $output);
       $io->writeln('Initiated and Processing...');
       $id = $input->getArgument('id');
       if(!$id) {
           $io->error('No id provided');
       }
       else {
           $io->success('Successfully run id='.$id);
       }
   }
}

 

Schritt 3. Erstellen eines TYPO3-Scheduler-Tasks

Go to System > Scheduler > Add New Task > Choose Class = Execute console commands

Wählen Sie unter Scheduler Command "myext:test TYPO3 Scheduler".

Schritt 4. Machen wir eine Testfahrt mit CLI-Befehlen

 

// For composer-based TYPO3 instance, I suggest to dump-autoload
composer dump-autoload

// Syntax
vendor/bin/typo3 myext:test [id]

// Without passing argument
vendor/bin/typo3 myext:test

// Without passing argument
vendor/bin/typo3 myext:test id=1

Benutzerhilfe zu unserem TYPO3 Scheduler Befehl

 

// Display help
vendor/bin/typo3 myext:test -h

Cron auf TYPO3 Scheduler einstellen

 

// Let’s schedule with Crontab

crontab -e
*/15 * * * * /usr/local/bin/php /www/typo3/sysext/core/bin/typo3 myext:test

Danke, dass Sie meinen Artikel gelesen haben. Ich hoffe, es hat Ihnen gefallen und Sie haben viel über den TYPO3 Scheduler gelernt.

Als TYPO3-Administrator lernen Sie immer wieder die Verwaltung von Scheduler-Tasks, die Einrichtung von Cronjobs usw. Wenn Sie einen eigenen Scheduler für Ihre speziellen Bedürfnisse erstellen möchten, kann der TYPO3-Entwickler Ihnen helfen, einen TYPO3-Scheduler-Task mit Symfony-Konsolenbefehlen zu erstellen.

Haben Sie Schwierigkeiten, den TYPO3 Scheduler einzurichten? Haben Sie irgendwelche Fragen? Schreiben Sie einfach in das Kommentarfeld.

Viel Spaß beim TYPO3 Scheduling!

Post a Comment

×
Captcha Code Kann das Bild nicht gelesen werden? Klicken Sie hier, um zu aktualisieren
  • user
    Archer Dowling 2023-02-06 um 1:17 am
    To the t3planet.com webmaster, Your posts are always well structured and easy to follow.
  • user
    Eric Weisz 2021-04-13 um 7:29 am
    Yeah! TYPO3 Scheduler is one of the best features to manage Cron jobs. Excellent article with excellent explanation.

You May Also Like