T&R splet blog o spletnih storitvah. Razgaljamo tehnologijo!

reference spletnih strani
10th November

PHP – ftp funkcionalnost (ftp funkcije)

Ne davno nazaj smo morali določeno vsebino iz strežnika prenesti na FTP, kjer ni šlo le za copy & paste, ampak tudi za pregled trenutnih datotek na FTP-ju in glede na trenutno stanje dodajanje novih datotek, preprečevanje, da bi kaj pomembnega izbrisali in tako naprej.

Zakaj bi pri tem uporabljali PHP, če imamo toliko FTP client programov, kot so Smart FTP, FlashFXP, Fire FTP itd.? Zato, ker lahko proces popolnoma avtomatiziramo in si s tem prihranimo čas, ki bi ga porabili za vsakodnevno kopiranje vsebin preko FTP clienta.

Sicer mi je bila sama ideja uporabe PHP FTP funkcij za avtomatizacijo procesa všeč, vendar mi je ostalo še nekaj slabega priokusa od takrat, ko sem se prvič seznanil sledečimi funkcijami in zato nisem bil ravno prepričan, če bo stvar 100% delovala.

Za delovanje PHP FTP funkcij potrebuje FTP modul. Več o tem si preberite na PHP spletni strani. Za osnovni wrapper FTP funkcij sem vzel CodeIgniter CI_FTP razred, ker je dovolj preprost, da sem ga lahko hitro prilagodil svojim potrebam (tukaj ciljam predvsem na izpis napak ter neodvisnost razreda od drugih knjižnic) in dovolj zmogljiv, da lahko z njim začnemo takoj izvajati operacije. K osnovni paleti funkcij sem dodal še (večino s pomočjo komentarjev na php.net spletni strani):

  • is_dir funkcijo, ki preveri ali je datoteka na FTP-ju direktorij ali ne
  • mkdir_recursive, ki kreira celotno pot imenika, naprimer test/imenik1/imenik2.

Pri upload funkciji pa je bilo potrebno dodati še majhne popravek do katerega pride zaradi uporabe absolutne poti na FTP-ju. Prejšna koda:

PHP:
  1. $result = @ftp_put($this->conn_id, $rempath, $locpath, $mode);

Trenutna koda:

PHP:
  1. $result = ftp_put($this->conn_id, basename($rempath), $locpath, $mode);

Pri tem pa je pomembno, da preden dodate datoteko na FTP z uporabo ftp_chdir (changedir v CI_FTP razredu) funkcije usmerite PHP na imenik v katerega bomo dodali datoteko, v nasprotnem primeru vam PHP vrne napako, da datoteke ni bilo moč ustvariti. To pa je v bistvu edina napaka na katero sem doletel pri uporabi PHP FTP funkcij. Vsekakor je bila moja skrb odveč, očitno je bil razlog težav pri prejšnji uporabi teh funkcij moje znanje:).

Primer kako dodati datoteke na FTP strežnik:

PHP:
  1. <?php
  2. require_once 'CI_FTP.inc';
  3.  
  4. // Get all info needed to connect
  5. $config = array(
  6.     'hostname'  => 'host',
  7.     'username'  => 'user',
  8.     'password'  => 'pass',
  9.     'debug'     => true,
  10. );
  11.  
  12. // Connect to FTP
  13. $ftp = new CI_FTP($config);
  14. if ($ftp->connect() === false) {
  15.     throw new Exception("PHP was not able to connect to {$config['hostname']}");
  16. }
  17.  
  18. // Loop trough files and transfer them to FTP
  19. $files = array(
  20.     'test.txt' => 'test/test.txt',
  21. );
  22.  
  23. foreach($files as $localFilename => $remoteFilename) {
  24.     // Create dir if doesn't exsists
  25.     if ($ftp->is_dir($remoteFilename) === false) {
  26.         $ftp->mkdir_recursive(dirname($remoteFilename), 0777);
  27.     }
  28.  
  29.     // Save file to FTP
  30.     $ftp->upload($localFilename, $remoteFilename);
  31.  
  32.     echo $remoteFilename . " uploaded\n";
  33. }
  34. ?>

Dodatne informacije:

Datoteke:

Ste tudi vi kdaj uporabili PHP FTP funkcije? Uporabljate kakšen drug razred?

Deli s skupnostjo:

  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks

Podobni članki:

  1. PHP funkcije v Javascript jeziku – isset
  2. DOMDocument – uporabne funkcije
  3. MySQL dupliciranje podatkov z INSERT INTO SELECT stavkom
  4. PHP – Zen Cart – Easy Populate – UTF8 podpora – UTF8 support
  5. PHP – Kreiranje PDF datoteke – DOMPDF – TCPDF
  6. Avtomatska posodobitev PHP skript preko centralne lokacije

2x komentirano na “PHP – ftp funkcionalnost (ftp funkcije)”

  1. Mesko je napisal:

    To je super funkcija, čeprav za kar bi jo jst uporabil bi jo uporabil za nadgrajevanje (updejtanje) spletnih programov ali za updejtanje strani. Tle se mi zdi najbolj uporabna zadevščina.

  2. Roky je napisal:

    Mesko isto dobra varianta ja.

Dodaj komentar