console.php 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. <?php
  2. use Illuminate\Foundation\Inspiring;
  3. use Illuminate\Support\Facades\Artisan;
  4. use Illuminate\Support\Facades\Schedule;
  5. use App\Services\SyncFootballDataService;
  6. use App\Jobs\DailyReportJob;
  7. Artisan::command('inspire', function () {
  8. $this->comment(Inspiring::quote());
  9. })->purpose('Display an inspiring quote');
  10. // // 这里定义你的定时任务(和以前 Kernel.php 里的 schedule 方法内容一样)
  11. // Schedule::command('inspire')->hourly();
  12. // // 每天运行一次的例子(凌晨1点)
  13. // Schedule::command('your:command-name')
  14. // ->dailyAt('01:00')
  15. // ->timezone('Asia/Shanghai')
  16. // ->onOneServer()
  17. // ->runInBackground();
  18. // // 或者调用闭包
  19. // Schedule::call(function () {
  20. // // 你的业务代码...
  21. // \Log::info('每日任务执行了 ' . now());
  22. // })->daily()->name('每日清理任务')->withoutOverlapping();
  23. // // 或者调度一个 Job 类
  24. // Schedule::job(new \App\Jobs\ProcessReports)->dailyAt('03:00');
  25. // 每天凌晨 2:00 自动 dispatch 这个 Job
  26. Schedule::job(new DailyReportJob)
  27. // ->dailyAt('02:00')
  28. ->twiceDaily(0, 12)
  29. // ->everyMinute()
  30. ->timezone('Asia/Shanghai') // 根据你的服务器时区调整
  31. ->onOneServer() // 多服务器部署时防止重复执行(推荐)
  32. ->withoutOverlapping() // 防止重叠执行(如果上一次还没完,这次不跑)
  33. ->name('report-every-12h')
  34. ->description('每 12 小时生成一次报表');
  35. // 或者调用闭包
  36. Schedule::call(function () {
  37. // 每日同步国家数据
  38. SyncFootballDataService::syncCountry();
  39. })->daily()->name('每日清理任务')->withoutOverlapping();