티스토리 뷰

배움/PHP

curl_multi_init

spaces25 2025. 7. 15. 14:36
반응형

curl_multi_init()은 PHP에서 여러 cURL 요청을 동시에 병렬로 처리할 수 있게 해주는 함수. 이를 통해 여러 HTTP 요청을 순차적으로 처리하는 것보다 훨씬 빠르게 네트워크 작업을 수행할 수 있음.


✅ PHP curl_multi_init() 사용 예제

<?php
// 요청할 URL 목록
$urls = [
    "https://jsonplaceholder.typicode.com/posts/1",
    "https://jsonplaceholder.typicode.com/posts/2",
    "https://jsonplaceholder.typicode.com/posts/3"
];

// 각 curl 핸들을 저장할 배열
$curl_handles = [];
$multi_handle = curl_multi_init(); // 멀티 핸들 초기화

// 각 요청별로 curl 핸들 생성 및 설정
foreach ($urls as $i => $url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 결과를 문자열로 반환
    curl_multi_add_handle($multi_handle, $ch); // 멀티 핸들에 추가
    $curl_handles[$i] = $ch;
}

// 실행
$running = null;
do {
    curl_multi_exec($multi_handle, $running);
    curl_multi_select($multi_handle); // 대기
} while ($running > 0);

// 결과 가져오기
foreach ($curl_handles as $i => $ch) {
    $response = curl_multi_getcontent($ch);
    echo "Response from URL {$urls[$i]}:\n";
    echo $response . "\n\n";
    curl_multi_remove_handle($multi_handle, $ch); // 핸들 제거
    curl_close($ch); // 핸들 닫기
}

// 멀티 핸들 닫기
curl_multi_close($multi_handle);
?>

💡 설명

  • curl_multi_init() : 멀티 cURL 핸들을 초기화.
  • curl_multi_add_handle() : 개별 cURL 요청을 멀티 핸들에 추가.
  • curl_multi_exec() : 실제 요청을 병렬로 수행.
  • curl_multi_select() : 블로킹 방식으로 대기하여 CPU 과다 사용을 방지.
  • curl_multi_getcontent() : 각 요청의 응답 데이터를 가져옴.
  • curl_multi_remove_handle() 및 curl_close() : 리소스 정리를 위한 함수.
반응형

'배움 > PHP' 카테고리의 다른 글

Eloquent 관계  (2) 2025.07.29
uniqid()  (0) 2025.07.16
call_user_func  (0) 2025.07.14
array_combine 함?  (1) 2025.07.11
ReflectionClass ?  (0) 2025.07.04
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함