ImageService.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. // 1. 正确的队列任务类 application/job/ImageJob.php
  3. namespace app\service;
  4. use think\Db;
  5. use think\Queue;
  6. class ImageService
  7. {
  8. public function handleImage($params) {
  9. // 如果是单条,转为数组
  10. if (isset($params['sourceDir'])) {
  11. $params = [$params];
  12. }
  13. $arr = [];
  14. foreach ($params as $k => $v) {
  15. // 确保每项是数组,防止异常
  16. if (!is_array($v)) continue;
  17. $arr[$k] = [
  18. "sourceDir" => $v['sourceDir'] ?? '',
  19. "outputDir" => $v['outputDir'] ?? '',
  20. "file_name" => $v['file_name'] ?? '',
  21. "prompt" => $v['prompt'] ?? '',
  22. "width" => $v['width'] ?? 512,
  23. "height" => $v['height'] ?? 512
  24. ];
  25. }
  26. // 推送队列(启用时请去掉 die)
  27. foreach ($arr as $value) {
  28. // 推送队列前,记录日志
  29. $id = Db::name('queue_log')->insertGetId([
  30. 'job_name' => 'app\job\ImageJob',
  31. 'status' => 0,
  32. 'data' => json_encode($value, JSON_UNESCAPED_UNICODE),
  33. 'created_at' => date('Y-m-d H:i:s'),
  34. ]);
  35. // 将日志ID传入队列中
  36. $value['log_id'] = $id;
  37. // 推送到队列
  38. Queue::push('app\job\ImageJob', $value);
  39. }
  40. }
  41. }