이 기능은 업,다운로드 중 다른 작업을 가능하게 해주는 진보된 기능입니다. 사용 방법은 이전 함수와 크게 다르지 않으니 어렵지 않습니다.
다음은 B 호스트에서 로컬로 다운로드합니다.
<?php
$ftp_server = "호스트 혹은 ip주소";
$ftp_user_name = "접속 아이디";
$ftp_user_pass = "접속 패스워드";
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
$file = 'test_body.php';
$fp = fopen($file, 'w');
$ret = ftp_nb_fget($conn_id, $fp, 'public_html/userid/test.php', FTP_BINARY);
$i = 1;
while ($ret == FTP_MOREDATA) {
echo "${i} \n";
$i++;
$ret = ftp_nb_continue($conn_id);
}
if ($ret != FTP_FINISHED) {
echo "다운로드 중 에러가 발생하였습니다.";
exit(1);
}
ftp_close($conn_id);
fclose($fp);
?>
다음은 로컬파일을 B 호스트로 업로드합니다.
<?php
$ftp_server = "호스트 혹은 ip주소";
$ftp_user_name = "접속 아이디";
$ftp_user_pass = "접속 패스워드";
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
$file = 'test.php';
$fp = fopen($file, 'r');
$ret = ftp_nb_fput($conn_id, 'public_html/userid/test.php', $fp, FTP_BINARY);
$i = 1;
while ($ret == FTP_MOREDATA) {
echo "${i} \n";
$i++;
$ret = ftp_nb_continue($conn_id);
}
if ($ret != FTP_FINISHED) {
echo "업로드중 에러가 발생하였습니다.";
exit(1);
}
ftp_close($conn_id);
fclose($fp);
?>
다음은 원격 업로드 이어전송하기 및 프로그레스 입니다.
<?php
ob_end_flush();
$remote_file = 'remote.txt';
$local_file = 'local.txt';
$fp = fopen($local_file, 'r');
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
$ret = ftp_nb_fput($conn_id, $remote_file, $fp, FTP_BINARY);
while ($ret == FTP_MOREDATA) {
if(!isset($conn_id2)) {
$conn_id2 = ftp_connect($ftp_server);
$login_result2 = ftp_login($conn_id2, $ftp_user_name, $ftp_user_pass);
}
if(isset($conn_id2)) {
clearstatcache();
$remote_file_size = ftp_size($conn_id2, $remote_file);
}
$local_file_size = filesize($local_file);
if (isset($remote_file_size) && $remote_file_size > 0 ){
$i = ($remote_file_size/$local_file_size)*100;
printf("%d%% uploaded<br />\n", $i);
flush();
}
$ret = ftp_nb_continue($conn_id);
}
if ($ret != FTP_FINISHED) {
print("There was an error uploading the file...<br />\n");
exit(1);
}
else {
print("ok!<br />\n");
}
ftp_close($conn_id);
fclose($fp);
?>