draw/cron-job

此组件允许管理cron作业。

0.10.47 2024-09-25 20:25 UTC

README

此库用于从数据库中管理和处理cron作业。

cron作业被发送到队列,并由worker通过symfony messenger处理。

配置

以下是如何启用此包的方法

注意:以下为默认配置,可根据您的需求进行覆盖。

框架扩展

draw_framework_extra:
  # ...
  cron_job:
    enabled: true
    doctrine:
      orm:
        mappings:
          DrawCronJob:
            is_bundle: false
            type: attribute
            dir: ...
            prefix: Draw\Component\CronJob\Entity

注意:以下服务可用

  • draw.cron_job.command.queue_cron_job_by_name_command: Draw\Component\CronJob\Command\QueueCronJobByNameCommand
  • draw.cron_job.command.queue_due_cron_jobs_command: Draw\Component\CronJob\Command\QueueDueCronJobsCommand
  • draw.cron_job.cron_job_processor: Draw\Component\CronJob\CronJobProcessor
  • draw.cron_job.message_handler.execute_cron_job_message_handler: Draw\Component\CronJob\MessageHandler\ExecuteCronJobMessageHandler

Sonata集成

draw_sonata_integration:
  cron_job:
    enabled: true
    admin:
      cron_job:
        group: Cron Job
        entity_class: Draw\Component\CronJob\Entity\CronJob
        controller_class: Draw\Bundle\SonataIntegrationBundle\CronJob\Controller\CronJobController
        icon: fas fa-clock
        label: Cron Job
        pager_type: simple
        show_in_dashboard: true
        translation_domain: SonataAdminBundle
      cron_job_execution:
        group: Cron Job
        entity_class: Draw\Component\CronJob\Entity\CronJobExecution
        controller_class: Draw\Bundle\SonataIntegrationBundle\CronJob\Controller\CronJobExecutionController
        icon: null
        label: Cron Job Execution
        pager_type: simple
        show_in_dashboard: true
        translation_domain: SonataAdminBundle

Messenger

您需要配置messenger组件的路由,以处理用于处理cron作业的消息。

framework:
  messenger:
    routing:
      Draw\Component\CronJob\Message\ExecuteCronJobMessage: 'async'

用法

启用包后,将出现一个新的管理员页面 - Cron Job。该包还提供了2个控制台命令

  • draw:cron-job:queue-due - 用于按配置处理到期的cron作业;应配置为每天执行一次 (* * * * *)
  • draw:cron-job:queue-by-name - 允许通过名称参数手动处理cron作业