cron-eu / cron-jobs

调度任务

安装: 39

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 3

分支: 0

开放问题: 0

类型:typo3-cms-extension

1.0.2 2024-03-13 11:06 UTC

This package is auto-updated.

Last update: 2024-09-13 12:19:58 UTC


README

通常,您会手动在TYPO3实例中数据库内使用“调度器”后端模块直接维护调度任务。

此扩展允许您通过YAML配置文件管理任务,该文件与数据库保持同步。这样,您可以保持任务版本化、可部署和可重复(即,您可以在wiki中维护一组“维护任务”,以便轻松复制粘贴到新项目中)。

安装

composer require cron-eu/cron-jobs

注意:这既不替代EXT:scheduler,也不会干扰常规调度作业的处理方式。由该扩展创建的任务仍然在数据库中,并在调度器后端模块中显示为常规任务。

它不会触碰手动添加的任务。由cron_jobs管理的任务将被放置在名为“cron_jobs”的单独任务组中。

用法

您可以这样工作

YAML配置

引入了一个新的YAML配置文件:config/scheduler/tasks.yaml。它看起来像这样

tasks:
  RefIndex:
    command: 'referenceindex:update'
    cronCmd: '0 3 * * *'
    description: 'Update reference index'

  CachingFrameworkGarbageCollection:
    description: 'Garbage collection for caching framework'
    class: 'TYPO3\CMS\Scheduler\Task\CachingFrameworkGarbageCollectionTask'
    interval: 180
    properties:
        selectedBackends:
        - 'TYPO3\CMS\Core\Cache\Backend\SimpleFileBackend'
        - 'TYPO3\CMS\Core\Cache\Backend\Typo3DatabaseBackend'
        - 'TYPO3\CMS\Core\Cache\Backend\FileBackend'

  brofix-checklinks:
    description: 'Check links for pid=6'
    command: 'brofix:checklinks'
    options:
        start-pages: '6'
        depth: ''
        to: 'mail@example.com'
        dry-run: false
        send-email: '1'
    cronCmd: '30 3 1,15 * *'
    condition: 'applicationContext matches "/Production\\/Live/"'

同步命令控制器

一旦您有了这个文件,您可以调用

bin/typo3 cronjobs:sync

它将在您的数据库中创建定义的任务(表tx_scheduler_tasks)。

之后,您可以调用此命令,它将保持您的任务与该文件保持同步。因此,只要您保持相同的标识符(在我们的示例中,RefIndexCachingFrameworkGarbageCollection),您就可以更改YAML文件中的设置,同步命令将负责在数据库中更新它。如果您的任务YAML文件中没有更改,数据库中也不会有任何更改。

同步将

  • 添加尚未由cron_jobs添加的新任务
  • 更新已更改定义的任务(例如,新的cronCmd或选项)
  • 删除以前由cron_jobs管理但不再包含在此文件中的任务

重要:请不要在后台模块中手动触摸由cron_jobs管理的任务!

导出命令控制器

如果您已经在您的安装中有了许多尚未由cron_jobs管理的任务,您可以调用此

bin/typo3 cronjobs:export

这将输出一个YAML文件,您可以将它手动添加到您的项目中作为启动(您仍然需要手动从数据库中删除手动创建的任务)。

参考

config/scheduler/tasks.yaml的语法

期望YAML文件config/scheduler/tasks.yaml有一个名为tasks:的根元素。以下是标识符的字典,也将存储在数据库中以供以后查找任务。使用唯一名称,例如任务的缩写名。

选项

  • classcommand(这两个中的任何一个都是必需的):调度器中抽象任务的一个完整有效的类名(class),或标记为schedulable: true的命令控制器的command,在Services.yaml中。
  • options(仅限command):传递给命令控制器的参数
  • properties(仅限class):如果要在任务中设置的属性是公共属性,则可以使用此方法直接设置
  • additionalFields(仅限class):传递给任务的字段,与后端模块中使用的字段相同(使用检查器查看它们的名称)。这使用任务的AdditionalFieldProvider
  • cronCmdinterval(这两个中的任何一个都是必需的):如调度器后端模块中所述
  • description(可选):也将显示在后台模块中
  • condition(可选):如果您希望任务仅根据某些条件(通常是 applicationContext)创建,您可以在常规“condition syntax”中编写一个条件,这种语法也来自网站配置 YAML。