[英]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.