lunedì 6 agosto 2012

Scaricare file da FTP con PHP

Ciao a tutti!
Oggi vi presenterò uno script che vi permetterà di effettuare il download automatico di file da cartelle ftp create di giorno in giorno con il formato yyyymmdd (esempio 20120806) utilizzando poche righe di codice scritte in php. Vediamo come:

1    <?php
2  
3    $ftp_server = "114.112.03.210";
4    $ftp_username = "user
";
5    $ftp_password = "password";
6    $ftp_conn = ftp_connect($ftp_server);
7

8    $login = ftp_login($ftp_conn, $ftp_username, $ftp_password);
9
10  $var = fopen("c:\mydir\log.html","a+");
11  fwrite($var, "[".date('d/m/Y - H:i')."]: Avvio batch aggiornamento<br>");
12 
13  if(!$ftp_conn || !$login) {
14
      echo "Connessione fallita!";
15
      fwrite($var, "[".date('d/m/Y - h:i')."]: Connessione fallita<br>");
16      }
17
18  else {
19      $dataOdierna = date("Ymd",time()); 
20      if(!is_dir("c:\mydir\$dataOdierna"))
21
          mkdir("c:\mydir\$dataOdierna",755);
22
      $listaFile = ftp_nlist($ftp_conn,"directoryFTP/$dataOdierna");
23
      foreach($listaFile as $file_down) {
24
          $dove_scaricare = explode("directoryFTP/",$file_down);
25
          $dove_scaricare = "c:\mydir\$dataOdierna\".$dove_scaricare[1];
26
          $download = ftp_get($ftp_conn, $dove, $file_down, FTP_BINARY);
27
          if (!$download) {
28
              echo "Errore download del file $file_down<br>";
29
              fwrite($var, "[".date('d/m/Y - H:i')."]: Error $file_down<br>");
30
              }
31
         else {
32
             fwrite($var, "[".date('d/m/Y - H:i')."]: $file_down completato!<br>");
33
         }
34      }
35      ftp_quit($ftp_conn);
36   }
37   fwrite($var, "[".date('d/m/Y - H:i')."]: Fine task<br><hr>");
38   fclose($var);
39
40   ?>

Vediamo ora cosa rappresentano le varie righe di codice:
dalla riga 3 alla 8 vediamo i campi dove inserire i nostri parametri di connessione, quindi l'indirizzo ip del server ftp (o anche il nome risolto come ad esempio ftp.tuosito.com), il nome utente e la password di accesso. Il tutto viene poi riunito in una variabile che andrà a creare la stringa di connessione, dopodichè viene effettuato il login al server.

Le righe 10, 11, 29, 32, 37 sono utilizzate per scrivere un file di log nella directory che preferiamo, in modo da poter visualizzare eventuali errori.

Nella riga 19 ricaviamo il nome della cartella utilizzando la funzione date("Ymd",time()) dove il primo parametro indica il formato (anno mese giorno tutto attaccato) e il secondo è una funzione che restituisce la data in formato unix al moemento in cui viene richiamata.

Nelle righe 20 e 21 andiamo a creare, se non esiste la cartella di destinazione (ne avremo una diversa per ogni giorno in cui lo script sarà lanciato) con permessi di lettura/scrittura 755, mentre la riga 22 andrà a caricare la lista dei files presenti nella cartella remota in un array che scorreremo dalla riga 23 alla 34.

Le righe 24 e 25 estrarranno esattamente il nome del file da memorizzare sul nostro disco (togliendo il nome della cartella ftp). Infine nella riga 26 verrà effettuato il trasferimento vero e proprio del file. Se le operazioni appena descritte saranno andate a buon fine o meno, il tutto sarà segnalato nel file di log impostato inizialmente.

Le ultime righe serviranno invece alla chiusura della connessione ftp, alla scrittura sul file di log del termine dell'operazione e alla chiusura di quest ultimo.

Stay tuned!

Nessun commento:

Posta un commento