개발자 Q&A

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

2025.05.25 04:45

curl_multi_exec 이해를 도와주세요

목록
  • 버전컨트롤러 6일 전 2025.05.25 04:45
  • 14
    1
저는 현재 PHP에서 멀티 프로세스를 사용하여 여러 URL에 대한 요청을 동시에 처리하려고 합니다. curl_multi_exec 함수를 사용하여 멀티 프로세스를 관리하고 싶습니다.

다음과 같은 코드를 작성했습니다.

php

$mh = curl_multi_init();

$ch1 = curl_init($url1);

$ch2 = curl_init($url2);



curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);



curl_multi_add_handle($mh, $ch1);

curl_multi_add_handle($mh, $ch2);



do {

    $status = curl_multi_exec($mh, $active);

} while ($status == CURLM_CALL_MULTI_PERFORM);



curl_multi_remove_handle($mh, $ch1);

curl_multi_remove_handle($mh, $ch2);



curl_multi_close($mh);



curl_multi_exec 함수에 대한 설명을 읽어보았지만, 이해가 잘 안 가는데요.

1. curl_multi_exec 함수는 어떤 역할을 하는가요?
2. while 루프에서 $status == CURLM_CALL_MULTI_PERFORM 인 경우를 설명해주세요.
3. $active 변수는 어떤 값을 갖나요?

curl_multi_exec 함수에 대한 더 많은 정보를 알려주세요.

    댓글목록

    profile_image
    나우호스팅  6일 전



    1. curl_multi_exec 함수는 멀티 프로세스를 관리하는 함수로, 여러 개의 cURL 핸들에 대한 요청을 동시에 처리할 수 있습니다. 이 함수는 cURL 핸들의 상태를 관리하고, 요청이 완료될 때까지 기다립니다.
    2. while 루프에서 $status == CURLM_CALL_MULTI_PERFORM 인 경우는, cURL 핸들이 아직 요청을 처리중인 중간 상태를 의미합니다. 이 경우, 루프를 다시 실행하여 cURL 핸들의 상태를 확인해야 합니다.
    3. $active 변수는 현재 실행중인 cURL 핸들의 수를 나타냅니다. 이 변수는 루프를 반복할 때마다 업데이트됩니다.

    curl_multi_exec 함수의 동작 순서를 이해하는 것이 중요합니다.

    1. curl_multi_init 함수를 호출하여 멀티 프로세스를 초기화합니다.
    2. curl_multi_add_handle 함수를 호출하여 cURL 핸들을 멀티 프로세스에 추가합니다.
    3. do-while 루프를 반복하여 curl_multi_exec 함수를 호출하여 cURL 핸들의 상태를 관리합니다. 루프를 반복할 때마다 $active 변수를 확인하여 현재 실행중인 cURL 핸들의 수를 확인할 수 있습니다.
    4. 루프를 종료한 후, curl_multi_remove_handle 함수를 호출하여 cURL 핸들을 멀티 프로세스에서 제거합니다.
    5. 마지막으로, curl_multi_close 함수를 호출하여 멀티 프로세스를 종료합니다.

    curl_multi_exec 함수의 반환값은 다음과 같습니다.

    * CURLM_CALL_MULTI_PERFORM : cURL 핸들이 아직 요청을 처리중인 중간 상태
    * CURLM_OK : cURL 핸들이 모두 요청을 처리 완료
    * CURLM_BAD_HANDLE : 잘못된 핸들
    * CURLM_BAD_OPTION : 잘못된 옵션
    * CURLM_OUT_OF_MEMORY : 메모리 부족
    * CURLM_INTERNAL_ERROR : 내부 오류

    curl_multi_exec 함수를 사용하여 멀티 프로세스를 관리하는 것이 중요합니다. 이 함수를 사용하여 여러 개의 cURL 핸들에 대한 요청을 동시에 처리할 수 있습니다.

    2025-05-25 04:46

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

검색

게시물 검색