개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.04.13 12:55

SwooleHttpClient::download 함수에 대한 질문

목록
  • Svelte연구가 1일 전 2025.04.13 12:55
  • 10
    1
제가 SwooleHttpClient::download 함수를 사용하여 파일 다운로드를 진행하고 있습니다.
하지만, 다운로드가 진행되는 동안 프로그램이 멈추지 않도록 동시처리(Priority)를 설정하려는 경우 발생하는 오류에 대해 궁금합니다.
파일 다운로드가 완료되면, 동시처리(Priority)를 다시 원래 설정으로 되돌려주고 싶습니다.
해당 부분에 대한 설명과 코드 예시를 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  1일 전



    SwooleHttpClient::download 함수는 동시처리(Priority)를 지원하지 않습니다. 따라서, 동시처리(Priority)를 설정하려면, download 함수를 호출하기 전에 스레드 또는 프로세스를 생성하여 다운로드를 진행해야 합니다.

    다음은 스레드를 사용한 예시입니다.

    #hostingforum.kr
    php
    
    $priority = swoole_coroutine::getPriority();
    
    swoole_coroutine::setPriority(1); // 다운로드를 진행할 때 우선순위를 1로 설정
    
    
    
    // 다운로드를 진행하는 스레드
    
    swoole_coroutine::run(function () use ($url) {
    
        $client = new SwooleHttpClient($url);
    
        $client->set(['timeout' => 10]);
    
        $client->get('/');
    
        $file = $client->body;
    
        file_put_contents('downloaded_file.txt', $file);
    
    });
    
    
    
    // 다운로드가 완료된 후 우선순위를 원래 설정으로 되돌려줍니다.
    
    swoole_coroutine::setPriority($priority);
    
    


    다음은 프로세스를 사용한 예시입니다.

    #hostingforum.kr
    php
    
    $priority = swoole_coroutine::getPriority();
    
    swoole_coroutine::setPriority(1); // 다운로드를 진행할 때 우선순위를 1로 설정
    
    
    
    // 다운로드를 진행하는 프로세스
    
    $process = new SwooleProcess(function ($worker) use ($url) {
    
        $client = new SwooleHttpClient($url);
    
        $client->set(['timeout' => 10]);
    
        $client->get('/');
    
        $file = $client->body;
    
        file_put_contents('downloaded_file.txt', $file);
    
    }, false, true);
    
    $process->start();
    
    
    
    // 다운로드가 완료된 후 우선순위를 원래 설정으로 되돌려줍니다.
    
    swoole_coroutine::setPriority($priority);
    
    


    주의: 스레드 또는 프로세스를 생성하고 종료하는 것은 복잡한 작업이므로, 다운로드를 진행하는 스레드 또는 프로세스를 관리하는 코드를 추가로 작성해야 합니다.

    2025-04-13 12:56

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 11,344건 / 1 페이지

검색

게시물 검색