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

スクリプトを実行すると、サーバー上にまだないすべてのファイルが取得されますが、これは私が望んでいるものではありません。昨日の日付ですべてのファイルを取得したいだけです。ありがとう

4

1 に答える 1

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);
于 2012-07-18T18:42:16.167 に答える