현재 위치: > 최신 기사 목록> curl_multi_close 사용 예 : 동시 HTTP 요청을 처리하는 방법

curl_multi_close 사용 예 : 동시 HTTP 요청을 처리하는 방법

gitbox 2025-05-12

현대 웹 개발에서 성능 최적화는 항상 중요한 주제였습니다. 특히 여러 HTTP 요청을 시작 해야하는 경우 프로그램의 응답 속도와 서버 리소스의 효율성에 동시에 직접적인 영향을 미치는 방법. PHP는 CURL_MULTI_* 시리즈 기능이 개발자가 여러 요청을 동시에 처리하여 실행 효율성을 크게 향상시키는 데 도움이 될 수있는 CURL EXTENSION을 제공합니다.

Curl_Multi_Close 의 사용법에 대해 자세히 알아보고 실제 예제와 결합하여 동시 HTTP 요청을 올바르게 관리하는 방법을 설명해 봅시다.

php에서 curl_multi_close ()는 CURL 멀티 핸들을 닫는 데 사용되는 함수입니다. curl_multi_init ()을 사용하여 멀티 핸들을 만들고 curl_multi_add_handle () 을 통해 동시 처리를 위해 여러 개의 별도의 컬 핸들을 추가 할 때 마침내 Curl_multi_Close ()를 호출하여 리소스를 확보하여 메모리 누출을 방지해야합니다.

기본 사용 단계

동시 요청의 일반적인 완전한 프로세스는 다음과 같습니다.

  1. 멀티 핸들을 초기화하십시오.

  2. 여러 컬 컬링 핸들을 만들고 해당 URL 및 옵션을 설정하십시오.

  3. 멀티 핸들에 쉬운 핸들을 추가하십시오.

  4. 멀티 핸들을 실행하십시오.

  5. 각 쉬운 손잡이를 제거하고 닫으십시오.

  6. 마지막으로 멀티 핸들을 닫습니다 ( curl_multi_close () 사용).

샘플 코드

다음은 Curl_Multi_Close ()를 올바르게 사용하여 동시 HTTP 요청을 관리하는 방법을 보여주는 완전한 예입니다.

 <?php

// 요청됩니다 URL 목록
$urls = [
    'https://gitbox.net/api/data1',
    'https://gitbox.net/api/data2',
    'https://gitbox.net/api/data3',
];

// 초기화 multi handle
$multiHandle = curl_multi_init();
$curlHandles = [];

// 초기화每个 cURL easy handle,그리고 추가하십시오 multi handle
foreach ($urls as $i => $url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    curl_multi_add_handle($multiHandle, $ch);
    $curlHandles[$i] = $ch;
}

// 구현하다 multi handle
$running = null;
do {
    $status = curl_multi_exec($multiHandle, $running);
    if ($running) {
        // 활성 연결을 기다리고 있습니다
        curl_multi_select($multiHandle);
    }
} while ($running > 0);

// 처리는 결과를 반환합니다
foreach ($curlHandles as $ch) {
    $content = curl_multi_getcontent($ch);
    $info = curl_getinfo($ch);

    echo "묻다 URL: " . $info['url'] . PHP_EOL;
    echo "HTTP 상태 코드: " . $info['http_code'] . PHP_EOL;
    echo "콘텐츠로 돌아갑니다: " . substr($content, 0, 100) . "..." . PHP_EOL;
    echo str_repeat("-", 50) . PHP_EOL;

    // 제거하고 닫습니다 easy handle
    curl_multi_remove_handle($multiHandle, $ch);
    curl_close($ch);
}

// 폐쇄 multi handle
curl_multi_close($multiHandle);
?>

키 노트

  • 모든 쉬운 핸들이 제거 된 후에 curl_multi_close () 에게 전화하십시오.

  • Curl_Multi_Close ()를 호출하는 것을 잊어 버린 경우, 스크립트 끝에서 PHP가 자원을 자동으로 릴리스 할 수 있지만, 특히 장기 실행 또는 대결 환경에서는 좋은 습관이 아니므로 메모리 누출이 발생합니다.

  • curl_multi_close ()는 추가 된 핸들을 자동으로 닫지 않으므로 멀티 핸들을 닫기 전에 각 쉬운 핸들을 수동으로 제거하고 닫아야합니다.

요약

curl_multi_close ()를 올바르게 사용하면 동시 HTTP 요청 관리가 효율적이고 안전한 지 확인할 수 있습니다. 모든 요청이 Curl_multi 로 처리 된 후에는 프로그램을 강력하고 성능을 유지하기 위해 모든 핸들 리소스를 정리하십시오.