Преглед на файлове

[智价云] 采集同步定时任务补充

tangyuanwang преди 1 месец
родител
ревизия
eedbd4b8d5
променени са 2 файла, в които са добавени 69 реда и са изтрити 0 реда
  1. 61 0
      app/Console/Commands/CollectSyncTask.php
  2. 8 0
      app/Console/Kernel.php

+ 61 - 0
app/Console/Commands/CollectSyncTask.php

@@ -0,0 +1,61 @@
+<?php
+
+namespace App\Console\Commands;
+
+use Illuminate\Console\Command;
+use Illuminate\Support\Facades\Log;
+use App\Jobs\Manager\CollectData\Ysbang\YsbangProductJobs;
+use App\Jobs\Manager\CollectData\Yycheng\YychengProductJobs;
+use App\Jobs\Manager\CollectData\JdTmao\JdTmaoProductJobs;
+
+/**
+ * 定时清洗采集的商品数据
+ * @author 唐远望
+ * @version 1.0
+ * @date 2026-02-09
+ */
+class CollectSyncTask extends Command
+{
+    /**
+     * 命令名称和签名
+     *
+     * @var string
+     */
+    protected $signature = 'task:collect_sync';
+
+    /**
+     * 命令描述
+     *
+     * @var string
+     */
+    protected $description = '每天04点执行的定时任务';
+
+    /**
+     * 执行命令
+     *
+     * @return int
+     */
+    public function handle()
+    {
+        $this->info('开始执行每日任务...');
+
+        try {
+            Log::info('每日采集数据同步任务执行中 - ' . now());
+            $message_data = ['page' => 1, 'limit' => 1000];
+            //执行药师帮商品数据采集同步任务
+            YsbangProductJobs::dispatch($message_data);
+            //执行医药城商品数据采集同步任务
+            YychengProductJobs::dispatch($message_data);
+            //执行京东天猫商品数据采集同步任务
+            JdTmaoProductJobs::dispatch($message_data);
+            // 示例:记录日志
+            $this->info('每日任务执行完成!');
+            return Command::SUCCESS;
+        } catch (\Exception $e) {
+            Log::error('每日采集数据同步任务执行失败: ' . $e->getMessage());
+            $this->error('任务执行失败: ' . $e->getMessage());
+
+            return Command::FAILURE;
+        }
+    }
+}

+ 8 - 0
app/Console/Kernel.php

@@ -33,6 +33,14 @@ class Kernel extends ConsoleKernel
             ->withoutOverlapping() // 防止任务重叠执行
             ->appendOutputTo(storage_path('logs/daily-task.log')) // 输出到日志文件
             ->onOneServer(); // 如果使用多服务器,确保只在一台服务器上运行
+        // 每天04:00执行
+        $schedule->command('task:collect_sync')
+            ->dailyAt('04:00')
+            ->timezone('Asia/Shanghai') // 设置时区,可选
+            ->runInBackground() // 在后台运行,可选
+            ->withoutOverlapping() // 防止任务重叠执行
+            ->appendOutputTo(storage_path('logs/collect-sync-task.log')) // 输出到日志文件
+            ->onOneServer(); // 如果使用多服务器,确保只在一台服务器上运行
     }
 
     /**