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

PHP ftp_nb_put() 함수 – FTP 서버에 비동기 방식으로 파일 업로드하기

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가 반환되면 업로드가 정상적으로 완료된 것이며, 그렇지 않으면 오류 메시지를 출력하고 스크립트를 종료합니다.