foowie/cron

v0.3 2020-10-20 06:56 UTC

This package is auto-updated.

Last update: 2024-09-20 15:15:40 UTC


README

Nette 框架的 Cron 扩展

对于安装,请在 bootstrap 或配置文件中使用 CronExtension。需要创建由 cron.sql 文件定义的数据库表。但是,这仅在使用 MidnightJob 或 TimeIntervalJob 时才是必需的。

所有应作为 cron 任务运行的作业都必须实现 IJob 接口,或者您可以使用 CallbackJob 来避免此要求。

有两种类提供延迟 cron 作业执行。一个是 MidnightJob,它在午夜后立即执行给定的 IJob。另一个是 TimeIntervalJob,它每隔给定的时间间隔重复执行任务。

要使用 Cron 处理作业,您应在配置文件中的每个服务上定义 [cronJob] 标签。

例如,如果您有一个每小时需要处理的 FooClass 类,您必须在配置文件中指定

services:
  foo: FooClass
  fooJob:
    class: Foowie\Cron\Job\TimeIntervalJob('foo', '1 hour', @foo)
    tags: [cronJob]

注意,在 TimeIntervalJob 类中的第一个参数是 cron 任务的唯一名称。如果 FooClass 没有实现 IJob 接口,您可以使用 CallbackJob 装饰器。

services:
  foo: FooClass
  fooJobDecorator: Foowie\Cron\Job\CallbackJob([@foo, 'methodNameToExecute'])
  fooJob:
    class: Foowie\Cron\Job\TimeIntervalJob('foo', '1 hour', @fooJobDecorator)
    tags: [cronJob]

要选择和执行任务,请运行 Cron::run() 方法。

默认情况下,FoowieCron 模块中的 CronPresenter 映射到 URL /cron/。要使用此演示者,需要在配置文件中指定键为 securityToken 的令牌。要禁用安全令牌,将其值设置为 null。要禁用 CronPresenter,将配置中的 mapPresenter 属性设置为 false。

还支持 Doctrine 2。默认行为是自动检测使用的 ORM。您可以在配置中使用键 repositoryType [ndb, doctrine] 手动设置它。实体 Foowie\Cron\JobInfo 在 src/Foowie/Cron/metadata/Foowie.Cron.JobInfo.dcm.xml 中具有映射元数据。如果您使用 Kdyby\Doctrine,则 KdybyDoctrineCronExtension 也映射此实体。