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

reference spletnih strani
30th March

Avtomatska posodobitev PHP skript preko centralne lokacije

Imate enako PHP kodo na večih lokacijah in želite možnost avtomatske posodobitve PHP kode s centralne lokacije, saj bi si s tem prihranili večkratno ponavljajoče kopiranje datotek na več lokacij ali uporabniku dodali možnost enostavne in hitre posodobitve. Zagon posodobitve je lahko ročen (klik uporabnika) ali preko cron-a.

Postopek avtomatske posodobitve PHP skript:

Seveda je v primeru, da je avtomatska posodobitev mišljena kot pomoč uporabniku, ki mu prihranimo iskanje novih datotek, dol-vlečenje, dodajanje na FTP in prepisovanje stare vsebine, je zelo priporočljivo sporočiti tudi status v primeru uspeha ali napako v primeru neuspeha. Poglejmo si PHP kodo, ki skrbi za zgoraj omenjeni postopek avtomatske posodobitve PHP kode:

PHP:
  1. $archiveZip         = file_get_contents('newFiles.zip'); //RM Preberemo datoteko, ki vsebuje novo verzijo aplikacije
  2. $archiveZipFilename = 'tempZip/newFiles.zip';
  3.  
  4. if ($archiveZip !== false) {
  5.   if (is_writeable('./tempZip')) {
  6.     if (file_put_contents($archiveZipFilename, $archiveZip)) { //RM Prebrano datoteko shranimo v začasni direktorij
  7.       new PclZip($archiveZipFilename);
  8.  
  9.       $archive        = new PclZip($archiveZipFilename); //RM Datoteko od-arhiviramo v določen direktorij in s tem posodobimo našo aplikacijo
  10.       $extractedFiles = $archive->extract(PCLZIP_OPT_STOP_ON_ERROR, PCLZIP_OPT_REPLACE_NEWER, PCLZIP_OPT_REMOVE_ALL_PATH, PCLZIP_OPT_PATH, './');
  11.  
  12.       if (is_array($extractedFiles)) echo count($extractedFiles).': files were extracted.';
  13.       else                           echo 'There was an error while extracting archive: '.$archive->errorInfo();
  14.  
  15.       @unlink($archiveZipFilename);
  16.     }
  17.   } else echo 'Directory is not writeable';
  18. } else echo 'New version of files cannot be downloaded';

Za delo z ZIP datotekami smo uporabili PclZip 2.6, ki omogoča hitro in enostavne delo z ZIP datotekami. Pri od pakiranju uporabimo sledeče konstantne:

#1 PCLZIP_OPT_STOP_ON_ERROR - V primeru najmanjše napake zaključimo z od-pakiranjem saj ne želimo pokvarjenih datotek, bolje da prej končamo z izvajanjem. Tukaj bi lahko dodali vmesno fazo in sicer tako, da bi najprej odpakirali vse datoteke in ob uspehu le-te operacije nove skripte prekopirali v direktorij, kjer se nahajajo obstoječe datoteke.

#2 PCLZIP_OPT_REPLACE_NEWER - Prepišemo stare skripte z novimi

#3 PCLZIP_OPT_REMOVE_ALL_PATH - Odstranimo pot, ki jo ima datoteka in ji prilagodimo novo pot.

#4 PCLZIP_OPT_PATH - Določimo direktorij, kjer bodo datoteke od-pakirane

Pri tem procesu bi lahko dodali tudi nastavljanje pravic s pomočjo PHP-ja, saj rabimo direktorij, kjer PHP lahko piše. To ne priporočam saj v večini primerov to ne uspe, ali zaradi safe mode direktive, ali pa zaradi ker PHP ne teče pod istim uporabnik s katerim uporabnik dostopa do FTP-ja in nastavlja pravice datoteka in direktorijam. Če ne drugače pa je to stvar, ki jo mora uporabnik nastaviti in se s tem zavedati, da bo PHP skripta odpakirala datoteko iz Y strani na FTP od uporabnika.

Dodatne informacije:

Delo z PclZip objektom nad ZIP datotekami sem prvič videl v All in One SEO Pack dodatku za Wordpress. Ker se mi je zdel enostaven ter učinkovit, sem ga zato uporabil tudi v mojem primeru.

Deli s skupnostjo:

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

Podobni članki:

  1. Avtomatska preusmeritev pri uporabniku prijaznem sporočilu o napaki
  2. Zagon skripte direktno preko PHP-ja – ukazne vrstice
  3. PHP – ftp funkcionalnost (ftp funkcije)
  4. Povezava preko IIS-ja s PHP-jem na strežnik MSSQL 2005 z uporabo Windows Authentication načina (MSSQL, PHP SQLSRV, Windows, IIS)
  5. PHP – izdelava galerije – preprosta skripta za prikazovanje slik
  6. Omejitev dostopa do spletne strani preko apache .htaccess in .htpasswd datoteke
  7. Posodobitev bloga – Wordpress 2.5
  8. Šumniki – UTF-8 – Težave – PHP & MySQL
  9. Wordpress 2.5.1 – posodobitev
  10. HTML Mime Mail PHP – nastavljanje kodne tabele (charset – windows-1250 – UTF-8) – Outlook Express

Dodaj komentar