ftp_nb_continue() 함수는 FTP 서버와의 파일 송수신 작업을 중단된 시점부터 이어서 계속 진행하는 역할을 합니다. 이 함수는 주로 비동기(non-blocking) 방식으로 파일을 다운로드하거나 업로드할 때 사용되며, 전송이 완료될 때까지 반복적으로 호출해야 합니다.
구문
ftp_nb_continue(con);
매개변수
con −
ftp_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 갱신 등에 유용하게 활용할 수 있습니다.