2012-07-18 57 views
0

我需要修改此腳本以檢索僅具有昨天日期的文件。以下是我有:根據昨天的日期從遠程服務器檢索文件

<?php 
$username = 'XXXXXX'; 
$password = 'XXXXXX'; 
$ftp_server = 'data.mywebsite.com'; 

$conn = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server"); 
if(ftp_login($conn, $username, $password)) 
{ 
    echo 'Logged in'; 
} 
else 
{ 
    echo 'FTP Error:Could not log in to '.$ftp_server; 
    exit(); 
} 
ftp_pasv ($conn, true); 
if (ftp_chdir($conn, "../Photos/Hi-res")) { 
    echo "Current FTP directory is now: " . ftp_pwd($conn) . "\n"; 
} else { 
    echo "Couldn't change to Photos directory\n"; 
} 

$list = ftp_nlist($conn, '.'); 
function is_img($file) { 
    if(preg_match('/.*\.png/', $file)) 
    { 
     return preg_match('/.*\.png/', $file) > 0; 
    } 
    if(preg_match('/.*\.jpg/', $file)) 
    { 
     return preg_match('/.*\.jpg/', $file) > 0; 
    } 
    if(preg_match('/.*\.gif/', $file)) 
    { 
     return preg_match('/.*\.gif/', $file) > 0; 
    } 
} 

$filtered = array_filter($list, is_img); 
foreach($filtered as $img) { 
    if (ftp_get($conn, $img, $img, FTP_BINARY)) { 
     echo "Successfully written to $img\n"; 
    } else { 
     echo "There was a problem\n"; 
    } 
} 
ftp_close($conn); 

當我運行該腳本,它搶佔了所有的文件已經沒有我的服務器是不是我想要的東西上。我只是想要它在昨天的日期抓取所有的文件。 謝謝

回答

0

下面是一個快速和骯髒的解決方案,請注意,這不會考慮服務器時區差異或其他陷阱時,比較mtimes。

主要的變化是is_img函數已經被重命名並且用每個文件的ftp_mdtm()擴展。

$username = 'XXXXXX'; 
$password = 'XXXXXX'; 
$ftp_server = 'data.mywebsite.com'; 
$now = time(); 

$conn = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server"); 
if(ftp_login($conn, $username, $password)) 
{ 
    echo 'Logged in'; 
} 
else 
{ 
    echo 'FTP Error:Could not log in to '.$ftp_server; 
    exit(); 
} 
ftp_pasv ($conn, true); 
if (ftp_chdir($conn, "../Photos/Hi-res")) { 
    echo "Current FTP directory is now: " . ftp_pwd($conn) . "\n"; 
} else { 
    echo "Couldn't change to Photos directory\n"; 
} 

$list = ftp_nlist($conn, '.'); 
function is_for_download($file) { 
    $is_img = false; 

    if(preg_match('/.*\.png/', $file)) 
    { 
     $is_img = preg_match('/.*\.png/', $file) > 0; 
    } 
    if(preg_match('/.*\.jpg/', $file)) 
    { 
     $is_img = preg_match('/.*\.jpg/', $file) > 0; 
    } 
    if(preg_match('/.*\.gif/', $file)) 
    { 
     $is_img = preg_match('/.*\.gif/', $file) > 0; 
    } 

    if (!$is_img) { 
     return false; 
    } 

    global $conn; 
    global $now; 

    $yesterday_start = strtotime('yesterday midnight', $now); 
    $yesterday_end = strtotime('yesterday midnight + 24 hours', $now); 
    $mtime = ftp_mdtm($conn, $file); 

    if ($yesterday_start <= $mtime && $mtime <= $yesterday_end) { 
     return true; 
    } 
    return false; 
} 

$filtered = array_filter($list, 'is_for_download'); 
foreach($filtered as $img) { 
    if (ftp_get($conn, $img, $img, FTP_BINARY)) { 
     echo "Successfully written to $img\n"; 
    } else { 
     echo "There was a problem\n"; 
    } 
} 
ftp_close($conn); 
+0

謝謝,我會試試! – 2012-07-19 02:05:11