:navigation-title: Cron Job Set up

..  include:: /Includes.rst.txt
..  _cron-job:

==================================================
Setting up the cron job to run the scheduler tasks
==================================================

Tasks registered with the Scheduler can be run manually from the backend
module. However this is of limited use. To really benefit from the
Scheduler, it must be set up on the server to run regularly. The
following chapters describe how to set this up on Unix or Unix-like
system (including Mac OS X) and on Windows.

..  _frequency:

Choosing a frequency
====================

Whatever system the Scheduler will run on, the first step is to define
the frequency at which it should run. The Scheduler script should set
up to run pretty often, but not unnecessarily often either. The
frequency should be that of the most often running task or some
frequency that fits all tasks.

For example, if you have some tasks running every quarter of an hour
and some others running every hour, it is useless to have the
Scheduler run every 5 minutes. On the other hand, if you have tasks
scheduled to run every 10 minutes and others every 15 minutes, you
will want to run the Scheduler every 5 minutes. Indeed, if you run it
only at 10-minute intervals, it will run – assuming it is 8 o'clock –
at 08:10, 08:20, 08:30, etc. So the tasks that should run at 08:15
will actually run 5 minutes late.


..  _unix-mac:

On Unix and Mac OS X
====================

On such systems the Scheduler must be set up as a cron job. There are
several ways to achieve this, although the simplest is probably to add
it to some user's crontab. Edit that user's crontab using:

..  code-block:: bash

   crontab -e

and add a line like

..  tabs::

   ..  group-tab:: Composer-based installation

      ..  code-block:: bash

         */15 * * * * /usr/local/bin/php /home/user/www/vendor/bin/typo3 scheduler:run

   ..  group-tab:: Legacy installation

      ..  code-block:: bash

         */15 * * * * /usr/local/bin/php /home/user/www/typo3/sysext/core/bin/typo3 scheduler:run

Save the modified crontab. Obviously, the paths have to be adapted to
your system. The above command will call up the Scheduler every 15
minutes.

..  seealso::

    See :ref:`scheduler-shell-script` for more information about
    calling the scheduler from the command line.

If you are editing system crontabs (for example :file:`/etc/crontab`
and :file:`/etc/cron.d/*` ), there will be one additional parameter
to enter, i.e. the user with which the job should run. Example:

..  tabs::

   ..  group-tab:: Composer-based installation

      ..  code-block:: bash

         */15 * * * * www /usr/local/bin/php /home/user/www/vendor/bin/typo3 scheduler:run

   ..  group-tab:: Classic installation

      ..  code-block:: bash

         */15 * * * * www /usr/local/bin/php /home/user/www/typo3/sysext/core/bin/typo3 scheduler:run

This will run the job as user "www".

If you are not familiar with cron syntax, refer to some Unix
administration book or start with the Wikipedia page about it
(https://en.wikipedia.org/wiki/Cron).

..  _windows:

On Windows
==========

On Windows, cron jobs are called "Scheduled tasks" and run with the
:file:`schtasks` utility. :file:`SchTasks.exe` performs operations
similar to those provided by Scheduled Tasks in the Control Panel. You
can use either tool to create, delete, configure, or simply display
scheduled tasks.

Assuming you want to run the TYPO3 Scheduler every 15 minutes, use the
following command line to create a new task:

..  tabs::

   ..  group-tab:: Composer-based installation

      ..  code-block:: bash

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

   ..  group-tab:: Classic installation

      ..  code-block:: bash

         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"

At task creation you will be prompted to give a password or you can
use the :code:`/u` and :code:`/p` switches to provide user and
password information. Note that the user must be a member of the
Administrators group on the computer where the command will run.

The full reference for :file:`schtasks` is available at:
https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/schtasks
