定时任务

传统的 Crontab 是外部调命令执行一个独立进程,Swoft 提供的 Crontab 相当于一个代码任务定时器,定时规则和 Linux 系统下的 Crontab 规则一致,兼容所有语法。区别在于 Linux 系统下的Crontab 的最小单位为分级,Swoft 的 Crontab 的规则支持到最小单位为秒级。

注解

@Scheduled

  • cron 定义定时任务执行时间格式,类似linux crontab,单位精确到秒

cron格式

  1. 0 1 2 3 4 5
  2. * * * * * *
  3. - - - - - -
  4. | | | | | |
  5. | | | | | +----- day of week (0 - 6) (Sunday=0)
  6. | | | | +----- month (1 - 12)
  7. | | | +------- day of month (1 - 31)
  8. | | +--------- hour (0 - 23)
  9. | +----------- min (0 - 59)
  10. +------------- sec (0-59)

实例

  1. /**
  2. * Demo task
  3. *
  4. * @Task("demo")
  5. */
  6. class DemoTask
  7. {
  8. /**
  9. * crontab定时任务
  10. * 每一秒执行一次
  11. *
  12. * @Scheduled(cron="* * * * * *")
  13. */
  14. public function cronTask()
  15. {
  16. echo time() . "每一秒执行一次 \n";
  17. return 'cron';
  18. }
  19. /**
  20. * 每分钟第3-5秒执行
  21. *
  22. * @Scheduled(cron="3-5 * * * * *")
  23. */
  24. public function cronooTask()
  25. {
  26. echo time() . "第3-5秒执行\n";
  27. return 'cron';
  28. }
  29. }

注意事项 定时任务所在的Task类注解coroutine不能为true

定时任务和普通任务是一样的,唯一不同的是,定时任务,到达时间点自动执行,无需手动投递任务。