ftping только сегодняшние файлы только - PullRequest
1 голос
/ 03 августа 2010

Я новичок в php. есть задача, чтобы ftp только сегодняшние файлы с сервера, содержащие файлы более недели. Как выбрать или отфильтровать файлы на основе даты и FTP в моей локальной папке. Помощь очень ценится!

Соломан

Ответы [ 2 ]

0 голосов
/ 03 августа 2010

ссылка: http://www.php.net/manual/en/function.ftp-rawlist.php

вы подключаетесь к серверу, получаете список файлов с помощью ftp_rawlist()

и получаете только нужный файл через ftp_fget()

пример

<?php

// set up basic connection
$conn_id = ftp_connect($ftp_server);

// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

// get the file list for /
$rawfiles = ftp_rawlist($conn_id, '/');

foreach ($rawfiles as $rawfile) {
# parse the raw data to array
if(!empty($rawfile)) {
    $info = preg_split("/[\s]+/", $rawfile, 9);       
    $arraypointer[] = array(
        'text'   => $info[8],
        'isDir'  => $info[0]{0} == 'd',
        'size'   => byteconvert($info[4]),
        'chmod'  => chmodnum($info[0]),
        'date'   => strtotime($info[6] . ' ' . $info[5] . ' ' . $info[7]),
        'raw'    => $info
        // the 'children' attribut is automatically added if the folder contains at least one file
    );
// pseudo code check the date
 if($arraypointer['date'] is today) 
   ftp_fget(file);
}

// close the connection
ftp_close($conn_id);

// output the buffer
var_dump($buff);
?>
0 голосов
/ 03 августа 2010

Если у вас уже есть имена файлов для проверки, используйте filemtime

Возвращает время последнего изменения файла или FALSE при ошибке. Время возвращается как метка времени Unix, которая подходит для функции date ().

Чтобы сравнить это сегодня, вы можете использовать date('Y-m-d'), чтобы получить сегодня, сравнить с date('Y-m-d', filemtime($filename))

Чтобы получить имена файлов, вы можете использовать readdir , чтобы прочитать каждое из них по очереди.

<?php
if ($handle = opendir('/path/to/files')) {
    echo "Directory handle: $handle\n";
    echo "Files:\n";

    while (false !== ($filename = readdir($handle))) {
        echo "$filename\n";
    }

    closedir($handle);
}
?>

В руководстве также есть пример FTP , который должен показать вам, как выполнить ftp файл после его обнаружения.

Итак, комбинируя все это, вы можете получить что-то вроде:

<?php
   // set up basic connection
   $conn_id = ftp_connect($ftp_server); 

   // login with username and password
   $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 

   // check connection
   if ((!$conn_id) || (!$login_result)) { 
      echo "FTP connection has failed!";
      echo "Attempted to connect to $ftp_server for user $ftp_user_name"; 
      exit; 
   } else {
      echo "Connected to $ftp_server, for user $ftp_user_name";
   }

   if ($handle = opendir('/path/to/files')) {

   while (false !== ($filename = readdir($handle))) {
      if (date('Y-m-d') == date('Y-m-d', filemtime($filename))) {
         // upload the file
         $upload = ftp_put($conn_id, $destination_file, $filename, FTP_BINARY); 

         // check upload status
         if (!$upload) { 
            echo "FTP upload has failed!";
         } else {
            echo "Uploaded $source_file to $ftp_server as $destination_file";
         }
      }
   }

   closedir($handle);

   // close the FTP stream 
   ftp_close($conn_id); 
?>

Конечно, вам нужно будет заполнить фиктивные значения соответствующим образом.

Отказ от ответственности : я набрал это в блокноте ++, и он не проверяется на ошибки!

...