ImageArrJob.php 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  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. //第一步:接收前端批量上传图片的任务
  11. echo date('Y-m-d H:i:s') ."批量推送任务已开始\n";
  12. foreach ($data as $key => $value) {
  13. // 判断 type 字段
  14. if (isset($value['type']) && $value['type'] === '文生图') {
  15. echo date('Y-m-d H:i:s') ."跳过图生文任务,批量执行文生图任务已开始\n";
  16. Queue::push('app\job\TextToImageJob', $value, 'txttoimg');
  17. } else {
  18. // 示例:推送 ImageJob 队列
  19. $id = Db::name('queue_log')->insertGetId([
  20. 'job_name' => 'app\job\ImageJob',
  21. 'status' => 0,
  22. 'data' => json_encode($value, JSON_UNESCAPED_UNICODE),
  23. 'created_at' => date('Y-m-d H:i:s'),
  24. ]);
  25. echo date('Y-m-d H:i:s') ."批量推送任务已结束,推送到图生文任务已开始\n";
  26. $value['log_id'] = $id;
  27. Queue::push('app\job\ImageJob', $value, 'imgtotxt');
  28. }
  29. }
  30. // 最后删除任务
  31. $job->delete();
  32. }
  33. /**
  34. * 任务失败时的处理
  35. */
  36. public function failed($data)
  37. {
  38. // 记录失败日志或发送通知
  39. \think\Log::error("ImageJob failed: " . json_encode($data));
  40. }
  41. }