현재 위치: > 최신 기사 목록> 크롤러 프로젝트에서 curl_upkeep ()를 사용하여 연결을 오랫동안 열어 두는 방법은 무엇입니까?

크롤러 프로젝트에서 curl_upkeep ()를 사용하여 연결을 오랫동안 열어 두는 방법은 무엇입니까?

M66 2025-06-28

HTTP 요청은 크롤러 프로젝트에서 매우 일반적인 운영입니다. 많은 양의 데이터를 크롤링하는 동안 매번 새로운 연결을 설정 해야하는 경우 특히 대상 웹 사이트에 요청에 특정 빈도 제한이있는 경우 효율성에 영향을 줄 수 있습니다. 이 프로세스를 최적화하려면 오랫동안 연결을 열어 두는 것이 특히 중요합니다. PHP에서는 curl_upkeep () 메소드를 사용하여 연결의 지속성을 유지하여 빈번한 새로운 연결을 피할 수 있습니다.

curl_upkeep () 란 무엇입니까?

Curl_upkeep () 는 PHP의 CURL 라이브러리를 통해 HTTP 요청을 보낼 때 일반적으로 연결이 닫히지 않도록하는 사용자 정의 기능입니다. curl_upkeep ()을 사용하는 경우 요청을 보낼 때마다 연결을 다시 설정하지 않아도됩니다. 특히 크롤러가 요청을 지속적으로 보낼 필요가있을 때 성능을 향상시킬 수 있습니다.

PHP에서는 CURL을 사용하여 HTTP 요청을 수행 할 때 일반적으로 기본 연결이 닫히는 경우가 있습니다. 요청할 때마다 연결을 다시 설정하지 않으려면 연결을 활성화하기 위해 관련 매개 변수를 설정해야합니다.

예 : 영구 연결을 위해 curl_upkeep ()를 사용하는 방법은 무엇입니까?

다음은 Curl_upkeep ()를 사용하여 연결을 열어 두는 방법을 보여주는 예입니다.

 <?php

function curl_upkeep($url)
{
    $ch = curl_init();

    // 설정cURL옵션
    curl_setopt($ch, CURLOPT_URL, $url); // 목표URL
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // 직접 출력 대신 응답 내용을 반환합니다
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // 자동 점프를 허용합니다
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
        "Connection: keep-alive",  // 연결 상태를 유지하십시오
        "Keep-Alive: 300",         // 설정超时时间,초 단위
    ));
    
    // 설정一个较长的超时,연결이 닫히는 것을 피하십시오
    curl_setopt($ch, CURLOPT_TIMEOUT, 300); // 설정请求超时时间为5분

    // 구현하다cURL요청하고 결과를 얻으십시오
    $response = curl_exec($ch);

    if(curl_errno($ch)) {
        echo 'Curl error: ' . curl_error($ch);
    }

    curl_close($ch);

    return $response;
}

// 사용curl_upkeep()요청하십시오
$url = "https://m66.net/api/data"; // 목표URL대체하십시오m66.net
$response = curl_upkeep($url);
echo $response;

?>

코드 설명 :

  1. curl_init () : 컬 세션 초기화.

  2. curl_setopt () : curlopt_url이 대상 URL을 지정하는 Curl 옵션을 설정합니다. curlopt_returntransfer는 직접 출력 대신 응답 내용을 반환합니다.

  3. 연결 유지 : 연결을 통해 : 유지유지 헤더 매개 변수는 연결이 활성 상태를 유지하도록 지정하십시오.

  4. 시간 초과 설정 : Curlopt_Timeout 매개 변수를 사용하여 서버가 연결을 닫지 않도록 긴 시간을 설정하십시오.

왜 연결을 계속해야합니까?

크롤러 프로젝트에서는 자주 설립 및 연결 폐쇄는 불필요한 오버 헤드를 증가시키고 효율성을 줄입니다. 연결 상태를 유지함으로써 우리는 다음과 같습니다.

  • 성능 향상 : 매번 새로운 연결을 설정하지 않고 기존 연결을 재사용하여 대기 시간을 줄입니다.

  • 금지 방지 : 일부 대상 웹 사이트는 동일한 IP에 대한 액세스 빈도를 제한 할 수 있습니다. 연결을 유지함으로써 연결 수를 줄이고 크롤링 방지 메커니즘을 트리거 할 수 있습니다.

  • 자원 저장 : 연결을 설정하려면 시간과 자원이 필요합니다. 연결을 유지하면 서버 및 클라이언트에 컴퓨팅 리소스를 저장하는 데 도움이됩니다.

주목해야 할 것

  • 시간 초과 : 적절한 시간 초과를 설정하는 것이 매우 중요합니다. 시간 초과가 너무 길어지면 요청이 너무 오래 걸릴 수 있습니다. 일반적으로 실제 요구에 따라 합리적인 시간 초과를 설정하는 것이 좋습니다.

  • 연결 제한 : 일부 서버는 지속적인 연결 (예 : 최대 연결 수)에 대한 특정 제한이있을 수 있으며 관련 구성을 조정해야 할 수도 있습니다.

  • 서버 지원 : 모든 서버가 오랫동안 연결 상태를 유지하는 것은 아닙니다. Keep-Alive를 사용하는 경우 대상 서버 가이 기능을 지원하는지 확인하십시오.