|
|
@@ -480,7 +480,7 @@ class AnimeController extends BaseController
|
|
|
flush();
|
|
|
|
|
|
$startTime = time();
|
|
|
- $maxDuration = 300; // 5分钟超时
|
|
|
+ $maxDuration = 1800; // 5分钟超时
|
|
|
$checkInterval = 5; // 每5秒检查一次
|
|
|
|
|
|
while (time() - $startTime < $maxDuration) {
|
|
|
@@ -2440,17 +2440,22 @@ class AnimeController extends BaseController
|
|
|
|
|
|
// 设置 SSE 响应头
|
|
|
return response()->stream(function () use ($taskId, $result, $uid) {
|
|
|
- // 设置 SSE 响应头
|
|
|
+ // 立即发送 init 消息
|
|
|
echo "data: " . json_encode([
|
|
|
'type' => 'init',
|
|
|
'data' => $result
|
|
|
]) . "\n\n";
|
|
|
+ if (ob_get_level() > 0) {
|
|
|
+ ob_end_flush();
|
|
|
+ }
|
|
|
ob_flush();
|
|
|
flush();
|
|
|
|
|
|
$startTime = time();
|
|
|
$maxDuration = 3600; // 超时设置
|
|
|
$checkInterval = 5; // 检查间隔
|
|
|
+ $lastQueueMessageTime = time(); // 记录上次发送队列消息的时间
|
|
|
+ $queueMessageInterval = 60; // 队列消息发送间隔(秒)
|
|
|
|
|
|
while (time() - $startTime < $maxDuration) {
|
|
|
try {
|
|
|
@@ -2630,6 +2635,23 @@ class AnimeController extends BaseController
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
+ // 每分钟发送一次队列状态消息
|
|
|
+ $currentTime = time();
|
|
|
+ if ($currentTime - $lastQueueMessageTime >= $queueMessageInterval) {
|
|
|
+ echo "data: " . json_encode([
|
|
|
+ 'type' => 'queue',
|
|
|
+ 'data' => [
|
|
|
+ 'task_id' => $task->id,
|
|
|
+ 'status' => $task->status,
|
|
|
+ 'elapsed_time' => $currentTime - $startTime,
|
|
|
+ 'message' => '任务正在队列中执行...'
|
|
|
+ ]
|
|
|
+ ]) . "\n\n";
|
|
|
+ ob_flush();
|
|
|
+ flush();
|
|
|
+ $lastQueueMessageTime = $currentTime;
|
|
|
+ }
|
|
|
+
|
|
|
sleep($checkInterval);
|
|
|
|
|
|
} catch (\Exception $e) {
|