PHP의 ftp_nb_put() 함수는 FTP 서버에 파일을 업로드하는 데 사용됩니다. 일반적인 ftp_put() 함수와 달리 비동기(non-blocking) 방식으로 동작하므로, 업로드가 진행되는 동안에도 스크립트가 다른 작업을 계속 수행할 수 있다는 장점이 있습니다.
구문
ftp_nb_put(con, remote_file, local_file, transfer_mode, beg_pos);
매개변수
con − ftp_connect()로 생성된 FTP 연결 리소스입니다.
remote_file − 서버에 저장될 원격 파일의 경로입니다.
local_file − 업로드할 로컬 파일의 경로입니다.
transfer_mode − 전송 모드를 지정합니다. 사용 가능한 값은 다음과 같습니다.
- FTP_ASCII (텍스트 모드)
- FTP_BINARY (바이너리 모드)beg_pos − 전송을 시작할 위치(오프셋)입니다.
반환 값
ftp_nb_put() 함수는 다음 세 가지 값 중 하나를 반환합니다.
FTP_FAILED − 전송(업로드/다운로드)에 실패한 경우
FTP_FINISHED − 전송이 성공적으로 완료된 경우
FTP_MOREDATA − 전송이 아직 진행 중인 경우
예제
다음은 ftp_nb_put() 함수를 사용하여 FTP 서버에 파일을 업로드하는 예제입니다.
<?php
$ftp_server = "192.168.0.4";
$ftp_user = "jacob";
$ftp_pass = "tywg61gh";
// FTP 서버에 연결
$con = ftp_connect($ftp_server) or die("$ftp_server에 연결할 수 없습니다.");
$login = ftp_login($con, $ftp_user, $ftp_pass);
$local_file = "new.txt";
$my_serverfile = "serverfile.txt";
// 비동기 방식으로 파일 업로드 시작
$c = ftp_nb_put($con, $my_serverfile, $local_file, FTP_BINARY);
// 업로드가 완료될 때까지 계속 진행
while ($c == FTP_MOREDATA) {
// 업로드 계속 진행
$c = ftp_nb_continue($con);
}
if ($c != FTP_FINISHED) {
echo "서버 파일 업로드 중 오류가 발생했습니다!";
exit(1);
}
// 연결 종료
ftp_close($con);
?>
위 예제에서는 ftp_nb_put()으로 업로드를 시작한 뒤, 반환 값이 FTP_MOREDATA인 동안 ftp_nb_continue()를 반복 호출하여 전송을 이어갑니다. 최종적으로 FTP_FINISHED가 반환되면 업로드가 정상적으로 완료된 것이며, 그렇지 않으면 오류 메시지를 출력하고 스크립트를 종료합니다.