Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP ftp_nb_continue() 함수 – FTP 파일 전송을 이어서 계속하는 방법

ftp_nb_continue() 함수는 FTP 서버와의 파일 송수신 작업을 중단된 시점부터 이어서 계속 진행하는 역할을 합니다. 이 함수는 주로 비동기(non-blocking) 방식으로 파일을 다운로드하거나 업로드할 때 사용되며, 전송이 완료될 때까지 반복적으로 호출해야 합니다.

구문

ftp_nb_continue(con);

매개변수

  • conftp_connect()로 생성한 FTP 연결 리소스입니다.

반환 값

ftp_nb_continue() 함수는 다음 세 가지 값 중 하나를 반환합니다.

  • FTP_FAILED − 파일 송수신에 실패한 경우

  • FTP_FINISHED − 파일 송수신이 정상적으로 완료된 경우

  • FTP_MOREDATA − 파일 송수신이 아직 진행 중인 경우

예제

다음은 ftp_nb_continue() 함수를 활용한 파일 다운로드 예제입니다. 여기서 “new.txt”는 로컬에 저장될 파일이고, “server.txt”는 FTP 서버에서 가져올 파일입니다.

<?php
    // ftp_connect() 및 ftp_login()으로 연결이 이미 설정되어 있다고 가정
    $ret = ftp_nb_get($ftp_conn, "new.txt", "server.txt", FTP_BINARY);

    while ($ret == FTP_MOREDATA) {
        // 다운로드가 계속 진행 중
        echo "파일을 다운로드하고 있습니다!";
        $ret = ftp_nb_continue($ftp_conn);
    }

    if ($ret != FTP_FINISHED) {
        echo "파일 다운로드가 정상적으로 완료되지 않았습니다!";
        exit(1);
    }
?>

위 코드에서는 ftp_nb_get()으로 다운로드를 시작한 뒤, 반환 값이 FTP_MOREDATA인 동안 ftp_nb_continue()를 반복 호출하여 전송을 이어갑니다. 전송이 모두 끝나면 FTP_FINISHED가 반환되어 루프가 종료됩니다. 만약 실패했다면 FTP_FAILED가 반환되므로, 이를 검사하여 오류 처리를 할 수 있습니다.

이처럼 비동기 방식의 FTP 함수를 사용하면 대용량 파일 전송 중에도 스크립트가 다른 작업을 수행할 수 있어, 진행 상황 표시나 UI 갱신 등에 유용하게 활용할 수 있습니다.