매일 파일을 업데이트하는 원격 FTP 서버가 있다고 가정합니다. 우리의 목표는 매일 아침 이른 시간에 PHP 스크립트를 통해 서버에 자동으로 연결하고 그날 새로 업로드 한 파일을 확인한 다음 후속 처리를 위해이 파일을 로컬로 다운로드하는 것입니다.
먼저 FTP 서버에 연결하고 로그인해야합니다.
$ftp_host = 'ftp.gitbox.net';
$ftp_user = 'username';
$ftp_pass = 'password';
$conn_id = ftp_connect($ftp_host);
if (!$conn_id) {
die("연결할 수 없습니다 FTP 섬기는 사람");
}
$login_result = ftp_login($conn_id, $ftp_user, $ftp_pass);
if (!$login_result) {
ftp_close($conn_id);
die("FTP 로그인이 실패했습니다");
}
ftp_rawlist를 사용하여 대상 디렉토리에서 파일 정보를 얻습니다.
$remote_dir = '/updates/';
$raw_list = ftp_rawlist($conn_id, $remote_dir);
if ($raw_list === false) {
ftp_close($conn_id);
die("파일 목록을 얻을 수 없습니다");
}
FTP_RAWLIST는 UNIX LS -L 명령의 출력과 유사한 라인 세트를 반환합니다. 이 줄을 구문 분석하고 파일 이름을 추출하고 시간을 수정해야합니다.
$today = date('M d'); // e.g., "May 23"
$files_to_download = [];
foreach ($raw_list as $line) {
$parts = preg_split("/\s+/", $line, 9);
if (count($parts) < 9) continue;
$month = $parts[5];
$day = str_pad($parts[6], 2, '0', STR_PAD_LEFT);
$file_time_or_year = $parts[7];
$name = $parts[8];
if ("$month $day" == $today) {
$files_to_download[] = $name;
}
}
그런 다음 그날 업데이트 된 파일을 다운로드하십시오.
foreach ($files_to_download as $file) {
$local_file = __DIR__ . "/downloads/$file";
$remote_file = $remote_dir . $file;
if (ftp_get($conn_id, $local_file, $remote_file, FTP_BINARY)) {
echo "파일을 성공적으로 다운로드하십시오:$file\n";
} else {
echo "다운로드 실패:$file\n";
}
}
작업이 완료되면 FTP 연결을 닫습니다.
ftp_close($conn_id);
위의 단계를 통해 FTP 서버에 자동으로 연결하고 매일 업데이트 된 파일을 다운로드 할 수있는 PHP 기반 타이밍 작업 스크립트를 구현합니다. 이 스크립트는 수동 개입없이 Linux의 CRON 타이밍 작업 시스템으로 매일 정기적으로 실행할 수 있습니다. 이 방법은 특히 로그 파일, 데이터 동기화 또는 정적 리소스 업데이트를 처리 할 때 파일을 정기적으로 업데이트 해야하는 다양한 시나리오에 적합합니다.