false, 'message' => lang('sse_method_not_allowed'), ], JSON_UNESCAPED_UNICODE); exit; } // SSE 헤더 설정 header('Content-Type: text/event-stream'); header('Cache-Control: no-cache'); header('Connection: keep-alive'); header('X-Accel-Buffering: no'); // Nginx 버퍼링 비활성화 // 출력 버퍼 비활성화 (즉시 전송) @ini_set('output_buffering', 'off'); @ini_set('zlib.output_compression', false); if (function_exists('apache_setenv')) { @apache_setenv('no-gzip', 1); } while (ob_get_level() > 0) { ob_end_clean(); } // 타임아웃 설정 (10분) set_time_limit(600); // 오류를 SSE 이벤트로 전송하기 위해 오류 출력 비활성화 ini_set('display_errors', '0'); error_reporting(E_ALL); // Worker 시작 로그 (디버깅용) addLog('=== Install Worker SSE Started ==='); addLog('Client IP: ' . ($_SERVER['REMOTE_ADDR'] ?? 'unknown')); // SSE emitter 등록 후 task runner 실행 setProgressEmitter(new SseEmitter()); runInstallationTasks();