ImageArrJob.php 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. <?php
  2. namespace app\job;
  3. use think\Db;
  4. use think\queue\Job;
  5. use think\Queue;
  6. class ImageArrJob
  7. {
  8. public function fire(Job $job, $data)
  9. {
  10. echo "批量推送任务已开始\n";
  11. // echo "接收的数据: " . json_encode($data) . "\n";
  12. //任务分解
  13. foreach ($data as $key => $value){
  14. // 推送队列前,记录日志
  15. $id = Db::name('queue_log')->insertGetId([
  16. 'job_name' => 'app\job\ImageJob',
  17. 'status' => 0,
  18. 'data' => json_encode($value, JSON_UNESCAPED_UNICODE),
  19. 'created_at' => date('Y-m-d H:i:s'),
  20. ]);
  21. // 将日志ID传入队列中
  22. $value['log_id'] = $id;
  23. Queue::push('app\job\ImageJob', $value,"imgtotxt");
  24. }
  25. echo "批量推送任务结束\n";
  26. $job->delete();
  27. }
  28. /**
  29. * 任务失败时的处理
  30. */
  31. public function failed($data)
  32. {
  33. // 记录失败日志或发送通知
  34. \think\Log::error("ImageJob failed: " . json_encode($data));
  35. }
  36. }