현재 위치: > 최신 기사 목록> FTP_RAWLIST를 사용하여 시간이 정해진 작업에서 매일 업데이트 파일을 얻으십시오.

FTP_RAWLIST를 사용하여 시간이 정해진 작업에서 매일 업데이트 파일을 얻으십시오.

gitbox 2025-05-26

장면 소개

매일 파일을 업데이트하는 원격 FTP 서버가 있다고 가정합니다. 우리의 목표는 매일 아침 이른 시간에 PHP 스크립트를 통해 서버에 자동으로 연결하고 그날 새로 업로드 한 파일을 확인한 다음 후속 처리를 위해이 파일을 로컬로 다운로드하는 것입니다.

1 단계 : FTP 서버에 연결하십시오

먼저 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 로그인이 실패했습니다");
}

2 단계 : 디렉토리 목록을 가져옵니다

ftp_rawlist를 사용하여 대상 디렉토리에서 파일 정보를 얻습니다.

 $remote_dir = '/updates/';
$raw_list = ftp_rawlist($conn_id, $remote_dir);
if ($raw_list === false) {
    ftp_close($conn_id);
    die("파일 목록을 얻을 수 없습니다");
}

3 단계 : 파일 목록을 구문 분석합니다

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;
    }
}

4 단계 : 파일을 다운로드하십시오

그런 다음 그날 업데이트 된 파일을 다운로드하십시오.

 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";
    }
}

5 단계 : 연결을 닫습니다

작업이 완료되면 FTP 연결을 닫습니다.

 ftp_close($conn_id);

요약

위의 단계를 통해 FTP 서버에 자동으로 연결하고 매일 업데이트 된 파일을 다운로드 할 수있는 PHP 기반 타이밍 작업 스크립트를 구현합니다. 이 스크립트는 수동 개입없이 Linux의 CRON 타이밍 작업 시스템으로 매일 정기적으로 실행할 수 있습니다. 이 방법은 특히 로그 파일, 데이터 동기화 또는 정적 리소스 업데이트를 처리 할 때 파일을 정기적으로 업데이트 해야하는 다양한 시나리오에 적합합니다.