| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- <?php
- // 1. 正确的队列任务类 application/job/ImageJob.php
- namespace app\service;
- use think\Db;
- use think\Queue;
- class ImageService
- {
- public function handleImage($params) {
- // 如果是单条,转为数组
- if (isset($params['sourceDir'])) {
- $params = [$params];
- }
- $arr = [];
- foreach ($params as $k => $v) {
- // 确保每项是数组,防止异常
- if (!is_array($v)) continue;
- $arr[$k] = [
- "sourceDir" => $v['sourceDir'] ?? '',
- "outputDir" => $v['outputDir'] ?? '',
- "file_name" => $v['file_name'] ?? '',
- "prompt" => $v['prompt'] ?? '',
- "width" => $v['width'] ?? 512,
- "height" => $v['height'] ?? 512
- ];
- }
- // 推送队列(启用时请去掉 die)
- foreach ($arr as $value) {
- // 推送队列前,记录日志
- $id = Db::name('queue_log')->insertGetId([
- 'job_name' => 'app\job\ImageJob',
- 'status' => 0,
- 'data' => json_encode($value, JSON_UNESCAPED_UNICODE),
- 'created_at' => date('Y-m-d H:i:s'),
- ]);
- // 将日志ID传入队列中
- $value['log_id'] = $id;
- // 推送到队列
- Queue::push('app\job\ImageJob', $value);
- }
- }
- }
|