lh 1 день назад
Родитель
Сommit
6cf6acfbe5
1 измененных файлов с 24 добавлено и 2 удалено
  1. 24 2
      app/Http/Controllers/Anime/AnimeController.php

+ 24 - 2
app/Http/Controllers/Anime/AnimeController.php

@@ -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) {