Installation 

This extension is part of the TYPO3 Core, but not installed by default.

Installation with Composer 

Check whether you are already using the extension with:

composer show | grep scheduler
Copied!

This should either give you no result or something similar to:

typo3/cms-scheduler       v12.4.11
Copied!

If it is not installed yet, use the composer require command to install the extension:

composer require typo3/cms-scheduler
Copied!

The given version depends on the version of the TYPO3 Core you are using.

Classic installation without Composer 

In an installation without Composer, the extension is already shipped but might not be activated yet. Activate it as follows:

  1. In the backend, navigate to the System > Extensions module.
  2. Click the Activate icon for the Scheduler extension.
Extension manager showing Scheduler extension

Extension manager showing Scheduler extension

Next steps 

Once the extension is installed, the following setting is available in System > Settings > Extension Configuration > scheduler:

Maximum lifetime 

Setting

maxLifetime

Type

integer, in minutes

Default

60

While a task runs, the Scheduler stores an execution mark on it, which makes it show up as "running". The mark is removed again when the task finishes. If the PHP process dies before that, the mark stays. The most common cause is a task exceeding the PHP memory_limit; a timeout or a killed process has the same effect.

If parallel execution is not allowed for the task (see Task execution), a stale mark prevents the task from ever running again. Every run of the Scheduler therefore removes execution marks that are older than the maximum lifetime and writes a log entry for each of them.

Removing the mark does not stop a process that is still running. If a task legitimately runs longer than the maximum lifetime, its mark is removed while it is still working, and the next Scheduler run can start the same task a second time in parallel.

Set the maximum lifetime to a value that is higher than the runtime of your longest-running task, but low enough that a crashed task is picked up again within an acceptable time. An empty value or 0 falls back to the default of 60 minutes, which is enough for regular tasks on current hardware.

Work that takes longer, such as processing large amounts of data, is better split into smaller chunks, for example by dispatching messages to the message bus and consuming them with the messenger:consume command, instead of running in a single long scheduler task.

A stale mark can also be cleared manually, see Stopping a task in the Scheduler backend module.

Extension configuration

Configuring the extension settings