메인 콘텐츠로 건너뛰기

Laravel의 Concurrency를 사용한 병렬 실행

stdio 모드의 경우

각각의 프로세스를 기동하는 것은 낭비지만, 이 방식으로만 동작했습니다. Concurrency 내부에서는 복잡한 직렬화를 하므로 SessionEvent 클래스가 아니라 content()의 문자열만 반환합니다.
use Revolution\Copilot\Facades\Copilot;
use Illuminate\Support\Facades\Concurrency;

$prompt = 'Tell me something about Copilot.';

[$gpt5_response, $sonnet_response] = Concurrency::run([
    fn () => Copilot::run($prompt, config: ['model' => 'gpt-5.2'])->content(),
    fn () => Copilot::run($prompt, config: ['model' => 'claude-sonnet-4.5'])->content(),
]);

echo 'GPT-5 Response: '.$gpt5_response;
echo 'Claude Sonnet Response: '.$sonnet_response;

TCP 모드의 경우

프로세스 기동이 없어 빠를 것 같지만 실제로는 크게 다르지 않았습니다. Process 드라이버에서는 어느 쪽이든 60초에 타임아웃되는 경우가 많습니다. CLI 환경 전용 fork 드라이버에서는 한쪽만 성공했습니다. 예외로 전부 실패가 되지는 않습니다. gpt-5만 실패하고 있어서 gpt-5.2로 바꿨더니 양쪽 모두 성공했습니다. 단순히 모델의 응답 시간 문제였을 수도 있습니다. Concurrency는 기능으로 존재하지만 실용화가 가능한지는 불명입니다. 시간이 걸리는 처리는 큐를 사용하는 것이 기본입니다.
최신 정보는 GitHub 저장소를 참고하세요.
마지막 수정일 2026년 7월 13일