簡體   English   中英

從PHP的FTP服務器僅下載新圖像

[英]Downloading only new images from FTP server in PHP

我做了一個小腳本,可以從FTP服務器下載圖像。 但是,事實是,每當我執行腳本時,都會下載所有圖像。 有什么辦法可以重寫代碼,使其僅下載新圖像?

我的腳本如下所示:

$ftp_server = "my_server_ip";
$ftp_user = "my_user_name";
$ftp_pass = "my_password";
$DIR="my_path_to_images_folder";

$conn = ftp_connect($ftp_server);
if(!$conn)
{
    exit("Can not connect to server: $ftp_server\n");
}

if(!ftp_login($conn,$ftp_user,$ftp_pass))
{
    ftp_quit($conn);
    exit("Can't login\n");
}

ftp_chdir($conn,$DIR);

$files = ftp_nlist($conn,'.');
for($i=0;$i<count($files);$i++)
{
    if(!ftp_get($conn,$files[$i],$files[$i],FTP_BINARY))
    {
        echo "Can't download {$files[$i]}\n";
    }
    else
    {
        echo "Successfully transferred images!";
    }
}

ftp_quit($conn);

謝謝。

要僅下載本地尚不存在或比本地副本新的文件,請使用:

$files = ftp_nlist($conn, '.');

foreach ($files as $file)
{
    $remote_time = ftp_mdtm($conn, $file);

    if (!file_exists($file) ||
        (filemtime($file) < $remote_time))
    {
        ftp_get($conn, $file, $file, FTP_BINARY);
        touch($file, $remote_time);
    }
}

如果您的服務器支持MLSD命令,你必須PHP 7.2及更高版本,可以替換ftp_nlist和反復調用ftp_mdtm一個高效的調用ftp_mlsd功能

您可以使用file_exists()方法檢查圖像的可用性
如果此方法返回true,則不要復制文件。
我猜你可以在沒有我幫助的情況下修改腳本:)

您需要定義“新”。

將已傳輸的圖像寫到日志文件中,然后在下次腳本運行時,您可以查找已傳輸的圖像,僅傳輸“新”圖像(不在日志文件中的圖像...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM