소스 검색

Merge branch 'test' into check_points

lh 1 개월 전
부모
커밋
72100fdfb6
2개의 변경된 파일13개의 추가작업 그리고 8개의 파일을 삭제
  1. 11 8
      app/Console/Commands/ProcessBatchEpisodeGenerationCommand.php
  2. 2 0
      app/Services/Anime/AnimeService.php

+ 11 - 8
app/Console/Commands/ProcessBatchEpisodeGenerationCommand.php

@@ -109,19 +109,22 @@ class ProcessBatchEpisodeGenerationCommand extends Command
         ];
         ];
 
 
         if (DIRECTORY_SEPARATOR === '/') {
         if (DIRECTORY_SEPARATOR === '/') {
-            // Linux:用 nohup 后台启动并立即返回,避免父进程退出时
-            // Symfony Process 析构(stop(0))把子进程一起杀掉
-            $commandLine = 'nohup ' . implode(' ', array_map('escapeshellarg', $command)) . ' > /dev/null 2>&1 &';
-            $process = Process::fromShellCommandline($commandLine);
+            // Linux:用 nohup 后台启动并立即返回。
+            // 使用 exec 而不是 Symfony Process,避免父进程退出时 Process 析构(stop(0))影响子进程;
+            // 子进程输出写入日志文件,便于排查拉起失败的原因。
+            $logFile = storage_path('logs/batch-worker-' . date('Ymd') . '.log');
+            $commandLine = 'nohup ' . implode(' ', array_map('escapeshellarg', $command))
+                . ' >> ' . escapeshellarg($logFile) . ' 2>&1 &';
+            exec($commandLine);
+            dLog('command')->info("拉起子进程命令: " . $commandLine);
         } else {
         } else {
             // Windows:数组参数直接启动(开发环境)
             // Windows:数组参数直接启动(开发环境)
             $process = new Process($command);
             $process = new Process($command);
             $process->disableOutput();
             $process->disableOutput();
+            $process->setTimeout(null);
+            $process->setIdleTimeout(null);
+            $process->start();
         }
         }
-
-        $process->setTimeout(null);
-        $process->setIdleTimeout(null);
-        $process->start();
     }
     }
 
 
     /**
     /**

+ 2 - 0
app/Services/Anime/AnimeService.php

@@ -200,6 +200,7 @@ class AnimeService
 
 
     public function createAnime($data) {
     public function createAnime($data) {
         $uid = Site::getUid();
         $uid = Site::getUid();
+        $cpid = Site::getCpid();
         $input_art_style = getProp($data, 'art_style');
         $input_art_style = getProp($data, 'art_style');
         $file = getProp($data, 'file');
         $file = getProp($data, 'file');
         $content = getProp($data, 'content', '');
         $content = getProp($data, 'content', '');
@@ -239,6 +240,7 @@ class AnimeService
 
 
         $anime_data = [
         $anime_data = [
             'user_id'       => $uid,
             'user_id'       => $uid,
+            'cpid'          => $cpid,
             'anime_name'    => '新剧本策划',
             'anime_name'    => '新剧本策划',
             'is_multi'      => getProp($data, 'is_multi', 1),
             'is_multi'      => getProp($data, 'is_multi', 1),
             'content'       => $content,
             'content'       => $content,