현재 위치: > 최신 기사 목록> Curl_Pause 함수를 사용하여 파일 업로드 또는 다운로드 작업을 사용하여 안전한 전송을 보장하는 방법은 무엇입니까?

Curl_Pause 함수를 사용하여 파일 업로드 또는 다운로드 작업을 사용하여 안전한 전송을 보장하는 방법은 무엇입니까?

M66 2025-06-28

네트워크 데이터 전송에 PHP를 사용할 때 CURL은 매우 일반적이고 강력한 도구입니다. 원격 서버에 파일을 업로드하든 원격 서버에서 파일을 다운로드하든 CURL은 유연한 제어 방법을 제공 할 수 있습니다. 네트워크를 일시적으로 중단하거나 특정 검증 메커니즘이 완료되기를 기다리거나 특정 보안 이벤트에 응답하는 것과 같은 일부 응용 프로그램 시나리오에서는 파일의 업로드 또는 다운로드 작업을 일시 중지하려고합니다. php의 curl_pause () 함수는 이러한 기능을 제공합니다.

curl_pause ()의 역할

Curl_Pause () 함수는 CURL 세션 중에 업로드 또는 다운로드 된 데이터 스트림을 일시적으로 일시 중지 또는 재개하는 데 사용됩니다. 이는 데이터 전송 프로세스 제어, 리소스 저장 및 비동기 이벤트에 대한 응답과 같은 시나리오에 매우 유용합니다.

함수 정의는 다음과 같습니다.

 curl_pause(CurlHandle $handle, int $bitmask): int

$ 핸들 은 컬 세션 리소스이고 $ bitmask는 일시 정지/복구를위한 제어 플래그입니다.

일반적으로 사용되는 $ 비트 마스크 상수는 다음을 포함합니다.

  • curlpause_recv : 수신 (다운로드) 데이터를 일시 중지합니다

  • curlpause_send : 멈춤 (업로드) 데이터를 일시 중지합니다

  • CurlPause_all : 일시 정지 업로드 및 다운로드

  • CurlPause_Cont : 업로드 및 다운로드를 복구하십시오

예 : 파일 다운로드 일시 중지

다음 예제는 파일을 다운로드하는 동안 일시 중지하고 특정 기간 후에 복구하는 방법을 보여줍니다.

 <?php
$ch = curl_init();

// 파일 주소를 다운로드하도록 설정하십시오
curl_setopt($ch, CURLOPT_URL, "https://m66.net/files/testfile.zip");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// 데이터를 수신 할 때 콜백 함수를 설정하십시오
curl_setopt($ch, CURLOPT_WRITEFUNCTION, function ($ch, $data) {
    static $totalReceived = 0;

    $totalReceived += strlen($data);
    echo "Received " . $totalReceived . " bytes\n";

    if ($totalReceived > 1024 * 100) { // 더 많은 것을 다운로드하십시오100KB나중에 일시 중지하십시오
        echo "Pausing download...\n";
        curl_pause($ch, CURLPAUSE_RECV);
        sleep(5); // 보안 확인 또는 이벤트 응답 대기를 시뮬레이션합니다
        echo "Resuming download...\n";
        curl_pause($ch, CURLPAUSE_CONT);
    }

    return strlen($data);
});

curl_exec($ch);
curl_close($ch);
?>

이 예에서는 Curlopt_writeFunction을 통해 데이터 수신에 대한 처리 로직을 사용자 정의하고 100KB 이상의 누적 다운로드 후 수신을 일시 중지 한 후 Curl_Pause ($ CH, CurlPause_Recv)를 호출 한 다음 5 초 후에 Curl_Pause ($ Ch, CurlPause_Cont) 에 의해 재개됩니다.

예 : 파일 업로드를 일시 중지합니다

게시물을 사용하여 서버에 파일을 업로드하는 경우 업로드 중간에 유사한 방식으로 파일을 일시 중지 할 수도 있습니다.

 <?php
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://m66.net/upload");
curl_setopt($ch, CURLOPT_POST, true);

// 파일을 열고 업로드 필드를 설정하십시오
$file = fopen("testfile.zip", "r");
curl_setopt($ch, CURLOPT_INFILE, $file);
curl_setopt($ch, CURLOPT_INFILESIZE, filesize("testfile.zip"));

// 데이터 업로드를 위해 콜백 함수를 설정하십시오
curl_setopt($ch, CURLOPT_READFUNCTION, function ($ch, $fd, $length) {
    static $uploaded = 0;
    $chunk = fread($fd, $length);
    $uploaded += strlen($chunk);

    if ($uploaded > 1024 * 50) { // 더 많이 업로드하십시오50KB나중에 일시 중지하십시오
        echo "Pausing upload...\n";
        curl_pause($ch, CURLPAUSE_SEND);
        sleep(3); // 시뮬레이션 된 보안 메커니즘 트리거 또는 인증 지연
        echo "Resuming upload...\n";
        curl_pause($ch, CURLPAUSE_CONT);
    }

    return $chunk;
});

curl_exec($ch);
fclose($file);
curl_close($ch);
?>

이 예제는 업로드 프로세스 중 업로드 진행 상황을 동적으로 제어하는 ​​기능을 보여줍니다. 임시 중단은 특정 업로드 볼륨 후에 이루어지며 보안 메커니즘 또는 외부 시스템의 응답 시간을 남기고 계속 업로드합니다.

향상된 전송 보안

Curl_Pause () 의 능력과 결합하여 데이터 전송 프로세스를보다 안전하게 관리 할 수 ​​있습니다.

  1. 인증 프로세스와 협력 : 인증 결과가 반환되기 전에 데이터 흐름을 일시 중지하여 무단 데이터 전송을 피하십시오.

  2. 비정상적인 트래픽 처리 : 자원 폐기물을 줄이기 위해 감지 된 비정상적인 행동 또는 교통 패턴을 일시 중지하십시오.

  3. 점진적 전송 : 안정성과 결함 공차를 향상시키기 위해 대형 파일을 일시 중지, 전송 및 확인합니다.

요약

Curl_Pause ()는 특히 고도로 사용 가능한 제어 가능한 데이터 전송 시스템을 구축 할 때 더 미세한 세분화 제어 수단을 제공합니다. 일시 정지 및 복구 작업을 유연하게 결합함으로써 더 안전한 전송 제어를 달성 할뿐만 아니라 리소스 사용량을 최적화하고 시스템 견고성을 향상시킬 수 있습니다. 이 기능을 마스터하면 PHP 프로그램이 복잡한 네트워크 환경에 직면 할 때 다양한 과제에 더 침착하게 대응할 수 있습니다.