| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- <?php
- namespace app\job;
- use think\Db;
- use think\queue\Job;
- use think\Queue;
- class ImageArrJob
- {
- public function fire(Job $job, $data)
- {
- //第一步:接收前端批量上传图片的任务
- echo date('Y-m-d H:i:s') ."批量推送任务已开始\n";
- foreach ($data as $key => $value) {
- // 判断 type 字段
- if (isset($value['type']) && $value['type'] === '文生图') {
- echo date('Y-m-d H:i:s') ."跳过图生文任务,批量执行文生图任务已开始\n";
- Queue::push('app\job\TextToImageJob', $value, 'txttoimg');
- } else {
- // 示例:推送 ImageJob 队列
- $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'),
- ]);
- echo date('Y-m-d H:i:s') ."批量推送任务已结束,推送到图生文任务已开始\n";
- $value['log_id'] = $id;
- Queue::push('app\job\ImageJob', $value, 'imgtotxt');
- }
- }
- // 最后删除任务
- $job->delete();
- }
- /**
- * 任务失败时的处理
- */
- public function failed($data)
- {
- // 记录失败日志或发送通知
- \think\Log::error("ImageJob failed: " . json_encode($data));
- }
- }
|