我们已经阅读https://developer.shopware.com/docs/guides/plugins/plugins/plugin-fundamentals/add-scheduled-task描述了如何定义每x分钟运行一次的调度任务。
是否也可以指定执行时间,例如每个午夜或每天凌晨2点,就像在crontab中一样?
在Shopware 6中没有这种可能性。使用CLI命令和crontab可以更容易地实现这一点。但是,如果你必须使用Shopware的计划任务,那么你可以通过将nextExecutionTime
设置为你想要执行任务的时间来欺骗它。
例如,如果今天的日期是2022年3月10日,并且您希望每天凌晨2点执行计划任务,则将nextExecutionTime
设置为2022-03-11 00:02:00.000
(使用未来日期(,将runInterval
设置为86400
(24小时(。通过这种方式,Shopware将在凌晨2点开始任务,然后将nextExecutionTime
设置为第二天凌晨2点(根据我的经验,+-几分钟(。
我不知道Shopware核心中有这样的功能
可能最直接的方法是添加一个";真实的";像您提到的cronjob,它触发CLI命令
您可以将任务的逻辑封装在它自己的服务中,以便scheduled task和cli命令都可以使用该服务(如果您希望保留两者(。