|
|
@@ -476,7 +476,9 @@ class AnimeController extends BaseController
|
|
|
'type' => 'init',
|
|
|
'data' => $result
|
|
|
]) . "\n\n";
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) {
|
|
|
+ ob_flush();
|
|
|
+ }
|
|
|
flush();
|
|
|
|
|
|
$startTime = time();
|
|
|
@@ -492,7 +494,9 @@ class AnimeController extends BaseController
|
|
|
'type' => 'error',
|
|
|
'message' => '任务不存在'
|
|
|
]) . "\n\n";
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) {
|
|
|
+ ob_flush();
|
|
|
+ }
|
|
|
flush();
|
|
|
break;
|
|
|
}
|
|
|
@@ -634,7 +638,9 @@ class AnimeController extends BaseController
|
|
|
'elapsed_time' => time() - $startTime
|
|
|
]
|
|
|
]) . "\n\n";
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) {
|
|
|
+ ob_flush();
|
|
|
+ }
|
|
|
flush();
|
|
|
|
|
|
// 如果任务完成(成功或失败),结束连接
|
|
|
@@ -653,7 +659,9 @@ class AnimeController extends BaseController
|
|
|
'error_message' => $task->error_message ? mapErrorMessage($task->error_message) : ''
|
|
|
]
|
|
|
]) . "\n\n";
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) {
|
|
|
+ ob_flush();
|
|
|
+ }
|
|
|
flush();
|
|
|
break;
|
|
|
}
|
|
|
@@ -665,7 +673,9 @@ class AnimeController extends BaseController
|
|
|
'type' => 'error',
|
|
|
'message' => '查询任务状态失败: ' . $e->getMessage()
|
|
|
]) . "\n\n";
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) {
|
|
|
+ ob_flush();
|
|
|
+ }
|
|
|
flush();
|
|
|
sleep($checkInterval);
|
|
|
}
|
|
|
@@ -680,7 +690,9 @@ class AnimeController extends BaseController
|
|
|
'task_id' => $taskId
|
|
|
]
|
|
|
]) . "\n\n";
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) {
|
|
|
+ ob_flush();
|
|
|
+ }
|
|
|
flush();
|
|
|
}
|
|
|
|
|
|
@@ -1036,7 +1048,9 @@ class AnimeController extends BaseController
|
|
|
'completed_tasks_count' => count($completeTasks),
|
|
|
'success_tasks_count' => count($successTasks)
|
|
|
]) . "\n\n";
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) {
|
|
|
+ ob_flush();
|
|
|
+ }
|
|
|
flush();
|
|
|
|
|
|
while (time() - $startTime < $maxDuration) {
|
|
|
@@ -1204,7 +1218,9 @@ class AnimeController extends BaseController
|
|
|
'completed_tasks_count' => count($completeTasks),
|
|
|
'success_tasks_count' => count($successTasks)
|
|
|
]) . "\n\n";
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) {
|
|
|
+ ob_flush();
|
|
|
+ }
|
|
|
flush();
|
|
|
}
|
|
|
|
|
|
@@ -1239,7 +1255,9 @@ class AnimeController extends BaseController
|
|
|
'success_tasks_count' => count($successTasks),
|
|
|
'success_segments' => $successSegments
|
|
|
]) . "\n\n";
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) {
|
|
|
+ ob_flush();
|
|
|
+ }
|
|
|
flush();
|
|
|
break;
|
|
|
}
|
|
|
@@ -1259,7 +1277,9 @@ class AnimeController extends BaseController
|
|
|
'completed_tasks_count' => count($completeTasks),
|
|
|
'success_tasks_count' => count($successTasks)
|
|
|
]) . "\n\n";
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) {
|
|
|
+ ob_flush();
|
|
|
+ }
|
|
|
flush();
|
|
|
|
|
|
// 检查是否超时,如果超时则停止循环
|
|
|
@@ -1280,7 +1300,9 @@ class AnimeController extends BaseController
|
|
|
'completed_tasks_count' => count($completeTasks),
|
|
|
'success_tasks_count' => count($successTasks)
|
|
|
]) . "\n\n";
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) {
|
|
|
+ ob_flush();
|
|
|
+ }
|
|
|
flush();
|
|
|
}
|
|
|
|
|
|
@@ -1945,7 +1967,9 @@ class AnimeController extends BaseController
|
|
|
'episode_info' => $episode ?? null
|
|
|
]
|
|
|
]) . "\n\n";
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) {
|
|
|
+ ob_flush();
|
|
|
+ }
|
|
|
flush();
|
|
|
return;
|
|
|
}
|
|
|
@@ -1961,7 +1985,9 @@ class AnimeController extends BaseController
|
|
|
'max_duration' => $maxDuration
|
|
|
]
|
|
|
]) . "\n\n";
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) {
|
|
|
+ ob_flush();
|
|
|
+ }
|
|
|
flush();
|
|
|
|
|
|
$completedSegments = [];
|
|
|
@@ -2098,7 +2124,9 @@ class AnimeController extends BaseController
|
|
|
'remaining_time' => max(0, $maxDuration - (time() - $startTime))
|
|
|
]
|
|
|
]) . "\n\n";
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) {
|
|
|
+ ob_flush();
|
|
|
+ }
|
|
|
flush();
|
|
|
}
|
|
|
|
|
|
@@ -2148,7 +2176,7 @@ class AnimeController extends BaseController
|
|
|
'episode_info' => $episode ?? null
|
|
|
]
|
|
|
]) . "\n\n";
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) ob_flush();
|
|
|
flush();
|
|
|
break;
|
|
|
}
|
|
|
@@ -2167,7 +2195,7 @@ class AnimeController extends BaseController
|
|
|
'elapsed_time' => time() - $startTime,
|
|
|
'remaining_time' => max(0, $maxDuration - (time() - $startTime))
|
|
|
]) . "\n\n";
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) ob_flush();
|
|
|
flush();
|
|
|
|
|
|
if (time() - $startTime >= $maxDuration) {
|
|
|
@@ -2193,7 +2221,7 @@ class AnimeController extends BaseController
|
|
|
'timeout_duration' => $maxDuration
|
|
|
]
|
|
|
]) . "\n\n";
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) ob_flush();
|
|
|
flush();
|
|
|
}
|
|
|
|
|
|
@@ -2445,10 +2473,7 @@ class AnimeController extends BaseController
|
|
|
'type' => 'init',
|
|
|
'data' => $result
|
|
|
]) . "\n\n";
|
|
|
- if (ob_get_level() > 0) {
|
|
|
- ob_end_flush();
|
|
|
- }
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) ob_flush();
|
|
|
flush();
|
|
|
|
|
|
$startTime = time();
|
|
|
@@ -2466,154 +2491,11 @@ class AnimeController extends BaseController
|
|
|
'type' => 'error',
|
|
|
'message' => '任务不存在'
|
|
|
]) . "\n\n";
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) ob_flush();
|
|
|
flush();
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- // // 如果任务还在处理中,查询最新状态
|
|
|
- // if ($task->status === 'processing') {
|
|
|
- // // 根据任务类型查询不同的状态
|
|
|
- // if ($task->api_type === 'jimeng') {
|
|
|
- // $statusResult = $this->AIVideoGenerationService->queryJimengTaskStatus($task);
|
|
|
- // } elseif ($task->api_type === 'keling') {
|
|
|
- // $statusResult = $this->AIVideoGenerationService->queryKelingOmniTaskStatus($task);
|
|
|
- // } elseif ($task->api_type === 'zzengine') {
|
|
|
- // $statusResult = $this->AIVideoGenerationService->queryUnifiedApiTaskStatus($task);
|
|
|
- // } else {
|
|
|
- // $statusResult = $this->AIVideoGenerationService->querySeedanceTaskStatus($task);
|
|
|
- // }
|
|
|
- // if (isset($statusResult['status'])) {
|
|
|
- // // 更新任务状态
|
|
|
- // $task->update([
|
|
|
- // 'status' => $statusResult['status'],
|
|
|
- // 'result_url' => $statusResult['result_url'] ?? null,
|
|
|
- // 'compressed_url' => $statusResult['compressed_url'] ?? null,
|
|
|
- // 'last_frame_url' => $statusResult['last_frame_url'] ?? '',
|
|
|
- // 'error_message' => $statusResult['error_message'] ?? null,
|
|
|
- // 'completed_at' => in_array($statusResult['status'], [
|
|
|
- // 'success',
|
|
|
- // 'failed'
|
|
|
- // ]) ? now() : null
|
|
|
- // ]);
|
|
|
-
|
|
|
- // // 如果任务成功,更新分镜表
|
|
|
- // if ($statusResult['status'] === 'success' && isset($statusResult['result_url'])) {
|
|
|
- // try {
|
|
|
- // DB::beginTransaction();
|
|
|
-
|
|
|
- // $now = date('Y-m-d H:i:s');
|
|
|
-
|
|
|
- // // 获取分镜ID
|
|
|
- // $act = DB::table('mp_episode_segments')
|
|
|
- // ->where('video_task_id', $taskId)
|
|
|
- // ->first();
|
|
|
-
|
|
|
- // if (!$act) {
|
|
|
- // throw new \Exception('未找到对应的片段记录');
|
|
|
- // }
|
|
|
-
|
|
|
- // $act_id = $act->id;
|
|
|
- // $anime_id = $act->anime_id;
|
|
|
- // $episode_number = $act->episode_number;
|
|
|
- // $act_content = $act->act_content;
|
|
|
-
|
|
|
- // // 更新分镜表
|
|
|
- // $segmentUpdateData = [
|
|
|
- // 'origin_video_url' => $statusResult['result_url'],
|
|
|
- // 'video_task_status' => '已完成',
|
|
|
- // 'last_frame_url' => $statusResult['last_frame_url'] ?? '',
|
|
|
- // 'current_type' => 2,
|
|
|
- // 'updated_at' => $now
|
|
|
- // ];
|
|
|
- // $compressed_video_url = compressVideo($statusResult['result_url']);
|
|
|
- // $segmentUpdateData['video_url'] = $compressed_video_url ?: $statusResult['result_url'];
|
|
|
-
|
|
|
- // // 只有当video_duration存在且大于0时才更新
|
|
|
- // if (isset($statusResult['video_duration']) && $statusResult['video_duration'] > 0) {
|
|
|
- // $segmentUpdateData['video_duration'] = $statusResult['video_duration'];
|
|
|
- // $segmentUpdateData['video_time_point_start'] = 0;
|
|
|
- // $segmentUpdateData['video_time_point_end'] = $statusResult['video_duration'];
|
|
|
- // }
|
|
|
-
|
|
|
- // $updateResult = DB::table('mp_episode_segments')
|
|
|
- // ->where('id', $act_id)
|
|
|
- // ->update($segmentUpdateData);
|
|
|
-
|
|
|
- // if (!$updateResult) {
|
|
|
- // Utils::throwError('20003:更新分镜表失败');
|
|
|
- // }
|
|
|
-
|
|
|
- // // 更新分镜视频成功后新增对话记录
|
|
|
- // // 获取参考图记录
|
|
|
- // $reference_images = getProp($task, 'ref_image_url');
|
|
|
- // if (!$reference_images) $reference_images = json_encode([], 256);
|
|
|
- // // 保存对话记录
|
|
|
- // $records = [
|
|
|
- // [
|
|
|
- // 'uid' => $uid,
|
|
|
- // 'anime_id' => $anime_id,
|
|
|
- // 'sequence' => $episode_number,
|
|
|
- // 'role' => 'user',
|
|
|
- // 'content' => '片段转视频',
|
|
|
- // 'act_id' => $act_id,
|
|
|
- // 'video_url' => '',
|
|
|
- // 'created_at' => $now,
|
|
|
- // 'updated_at' => $now
|
|
|
- // ],
|
|
|
- // [
|
|
|
- // 'uid' => $uid,
|
|
|
- // 'anime_id' => $anime_id,
|
|
|
- // 'sequence' => $episode_number,
|
|
|
- // 'role' => 'assistant',
|
|
|
- // 'content' => $act_content,
|
|
|
- // 'act_id' => $act_id,
|
|
|
- // 'video_url' => $statusResult['result_url'],
|
|
|
- // 'reference_images' => $reference_images,
|
|
|
- // 'created_at' => $now,
|
|
|
- // 'updated_at' => $now
|
|
|
- // ]
|
|
|
- // ];
|
|
|
-
|
|
|
- // DB::table('mp_anime_records')->insert($records);
|
|
|
-
|
|
|
- // DB::commit();
|
|
|
-
|
|
|
- // } catch (\Exception $e) {
|
|
|
- // DB::rollBack();
|
|
|
-
|
|
|
- // $logData = [
|
|
|
- // 'task_id' => $taskId,
|
|
|
- // 'error' => $e->getMessage()
|
|
|
- // ];
|
|
|
- // dLog('anime')->error('视频任务处理失败', $logData);
|
|
|
- // logDB('anime', 'error', '视频任务处理失败', $logData);
|
|
|
- // }
|
|
|
- // } elseif ($statusResult['status'] === 'failed') {
|
|
|
- // DB::table('mp_episode_segments')
|
|
|
- // ->where('video_task_id', $taskId)
|
|
|
- // ->update([
|
|
|
- // 'video_task_status' => '失败',
|
|
|
- // 'updated_at' => date('Y-m-d H:i:s')
|
|
|
- // ]);
|
|
|
- // }
|
|
|
- // }
|
|
|
- // }
|
|
|
- //
|
|
|
- // // 发送当前状态
|
|
|
- // echo "data: " . json_encode([
|
|
|
- // 'type' => 'update',
|
|
|
- // 'data' => [
|
|
|
- // 'task_id' => $task->id,
|
|
|
- // 'status' => $task->status,
|
|
|
- // 'result_url' => $task->result_url,
|
|
|
- // 'error_message' => $task->error_message,
|
|
|
- // 'elapsed_time' => time() - $startTime
|
|
|
- // ]
|
|
|
- // ]) . "\n\n";
|
|
|
- // ob_flush();
|
|
|
- // flush();
|
|
|
-
|
|
|
// 如果任务完成(成功或失败),结束连接
|
|
|
if (in_array($task->status, [
|
|
|
'success',
|
|
|
@@ -2630,7 +2512,7 @@ class AnimeController extends BaseController
|
|
|
'error_message' => $task->error_message ? mapErrorMessage($task->error_message) : ''
|
|
|
]
|
|
|
]) . "\n\n";
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) ob_flush();
|
|
|
flush();
|
|
|
break;
|
|
|
}
|
|
|
@@ -2647,7 +2529,7 @@ class AnimeController extends BaseController
|
|
|
'message' => '任务正在队列中执行...'
|
|
|
]
|
|
|
]) . "\n\n";
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) ob_flush();
|
|
|
flush();
|
|
|
$lastQueueMessageTime = $currentTime;
|
|
|
}
|
|
|
@@ -2659,7 +2541,7 @@ class AnimeController extends BaseController
|
|
|
'type' => 'error',
|
|
|
'message' => '查询任务状态失败: ' . $e->getMessage()
|
|
|
]) . "\n\n";
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) ob_flush();
|
|
|
flush();
|
|
|
sleep($checkInterval);
|
|
|
}
|
|
|
@@ -2674,7 +2556,7 @@ class AnimeController extends BaseController
|
|
|
'task_id' => $taskId
|
|
|
]
|
|
|
]) . "\n\n";
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) ob_flush();
|
|
|
flush();
|
|
|
}
|
|
|
|
|
|
@@ -2712,7 +2594,9 @@ class AnimeController extends BaseController
|
|
|
'type' => 'error',
|
|
|
'message' => $validator->errors()->first()
|
|
|
]) . "\n\n";
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) {
|
|
|
+ ob_flush();
|
|
|
+ }
|
|
|
flush();
|
|
|
}, 200, [
|
|
|
'Content-Type' => 'text/event-stream',
|
|
|
@@ -2732,7 +2616,9 @@ class AnimeController extends BaseController
|
|
|
'type' => 'error',
|
|
|
'message' => '分集不存在'
|
|
|
]) . "\n\n";
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) {
|
|
|
+ ob_flush();
|
|
|
+ }
|
|
|
flush();
|
|
|
}, 200, [
|
|
|
'Content-Type' => 'text/event-stream',
|
|
|
@@ -2816,7 +2702,7 @@ class AnimeController extends BaseController
|
|
|
'type' => 'error',
|
|
|
'message' => '未找到分镜数据'
|
|
|
]) . "\n\n";
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) ob_flush();
|
|
|
flush();
|
|
|
}, 200, [
|
|
|
'Content-Type' => 'text/event-stream',
|
|
|
@@ -2834,7 +2720,7 @@ class AnimeController extends BaseController
|
|
|
'type' => 'error',
|
|
|
'message' => '请检查是否有时长为空的片段'
|
|
|
]) . "\n\n";
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) ob_flush();
|
|
|
flush();
|
|
|
}, 200, [
|
|
|
'Content-Type' => 'text/event-stream',
|
|
|
@@ -3097,7 +2983,7 @@ class AnimeController extends BaseController
|
|
|
'success_tasks_count' => $total_tasks_count,
|
|
|
'episode' => $episode
|
|
|
]) . "\n\n";
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) ob_flush();
|
|
|
flush();
|
|
|
}, 200, [
|
|
|
'Content-Type' => 'text/event-stream',
|
|
|
@@ -3116,7 +3002,7 @@ class AnimeController extends BaseController
|
|
|
'type' => 'error',
|
|
|
'message' => trim($errorMsg)
|
|
|
]) . "\n\n";
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) ob_flush();
|
|
|
flush();
|
|
|
}, 200, [
|
|
|
'Content-Type' => 'text/event-stream',
|
|
|
@@ -3154,7 +3040,7 @@ class AnimeController extends BaseController
|
|
|
'completed_tasks_count' => count($completeTasks),
|
|
|
'success_tasks_count' => count($successTasks)
|
|
|
]) . "\n\n";
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) ob_flush();
|
|
|
flush();
|
|
|
|
|
|
while (time() - $startTime < $maxDuration) {
|
|
|
@@ -3325,7 +3211,7 @@ class AnimeController extends BaseController
|
|
|
'completed_tasks_count' => count($completeTasks),
|
|
|
'success_tasks_count' => count($successTasks)
|
|
|
]) . "\n\n";
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) ob_flush();
|
|
|
flush();
|
|
|
}
|
|
|
|
|
|
@@ -3345,7 +3231,7 @@ class AnimeController extends BaseController
|
|
|
'success_tasks_count' => count($successTasks),
|
|
|
'episode' => $updatedEpisode
|
|
|
]) . "\n\n";
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) ob_flush();
|
|
|
flush();
|
|
|
break;
|
|
|
}
|
|
|
@@ -3365,7 +3251,7 @@ class AnimeController extends BaseController
|
|
|
'completed_tasks_count' => count($completeTasks),
|
|
|
'success_tasks_count' => count($successTasks)
|
|
|
]) . "\n\n";
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) ob_flush();
|
|
|
flush();
|
|
|
|
|
|
// 检查是否超时,如果超时则停止循环
|
|
|
@@ -3386,7 +3272,7 @@ class AnimeController extends BaseController
|
|
|
'completed_tasks_count' => count($completeTasks),
|
|
|
'success_tasks_count' => count($successTasks)
|
|
|
]) . "\n\n";
|
|
|
- ob_flush();
|
|
|
+ if (ob_get_level() > 0) ob_flush();
|
|
|
flush();
|
|
|
}
|
|
|
|