Programiranje

Upravljanje datotečnega sistema s PHP

Prej sem blogiral o uporabi PHP-ja v ukazni vrstici, vendar nisem uporabljal PHP-ja za dostop do datotečnega sistema v tej objavi v interesu velikosti objav v blogu. V tej objavi opisujem nekaj osnov upravljanja datotečnega sistema PHP.

Mnogi od nas, ki pišemo in uporabljamo skripte, to počnemo za funkcije, povezane z datotečnim sistemom. Skriptiramo dejanja, ki jih običajno izvajamo v datotečnem sistemu. Natančneje, pogosto se znajdemo v kopiranju datotek, preimenovanju datotek, odstranjevanju datotek ter odpiranju in zapiranju datotek. Pogosto moramo izvesti določeno logiko na podlagi določenih značilnosti datotek in imenikov. Brez dostojne podpore datotečnemu sistemu bi težko resno obravnavali jezik kot skriptni jezik. Na srečo ima PHP vgrajeno podporo za upravljanje datotečnega sistema. To podporo lahko uporabljate skupaj z ukazno vrstico PHP.

W3Schools.com je dokazano dragocen vir za spoznavanje spletnih tehnologij in njihov pokritost funkcij datotečnega sistema PHP je še en primer tega. Stran nas opozarja, da so funkcije datotečnega sistema PHP "del jedra PHP" in "omogočajo dostop do datotečnega sistema in upravljanje z njim." Še pomembneje pa je, da ta stran povzema tudi podrobnosti o konfiguraciji datotečnega sistema PHP, funkcije datotečnega sistema PHP in konstante datotečnega sistema PHP. S klikom na ime funkcije se prikaže stran z več podrobnostmi o tej funkciji in primerom kode PHP, ki uporablja to funkcijo. Ker bom v tem prispevku zajemal samo njihovo podmnožico, sem se želel zgodaj sklicevati na to stran W3Schools.

Naslednji skript, demoPhpFileSystemManagement.php, prikazuje več funkcij PHP za določanje informacij o datotekah. Tukaj navedem celoten scenarij in nato med razpravljanjem znova reproduciram njegove dele.

demoPhpFileSystemManagement.php

#! / usr / bin / php 

Preden sem podrobneje opisal funkcije datotečnega sistema PHP, uporabljene v zgornjem primeru, sem v tej kodi PHP opazil svoje ozadje Java. Za funkcije v kodi sem na primer uporabil komentarje v slogu Javadoc. Na srečo PHPDocumentor pri ustvarjanju dokumentacije kode spoštuje komentarje v slogu Javadoc. Zgornja koda prikazuje tudi razlike v konvencijah poimenovanja, ki sem jih vajen v Javi (primer camel), in v poimenovanjih PHP (vsa mala imena z besedami, ločenimi s podčrtaji), kot kažejo funkcije PHP.

Prvi del skripta PHP vsebuje preprost besedilni meni ukazne vrstice, ki uporabnika pozove, da vnese izbire ter imena datotek in poti. Ta delček kode sam s funkcijami datotečnega sistema PHP ne naredi ničesar, vendar prikazuje standardne vhodne in izhodne podatke PHP in stavek PHP stikala. Ta prvi del je reproduciran tukaj.

Meni ukazne vrstice in obdelava vnosa

do {echo "\ nKakšno delovanje datotečnega sistema PHP želite zagnati? \ n \ n"; echo "1. Razčleni podatke o poti datoteke \ n"; echo "2. Pridobite absolutno pot \ n"; echo "3. Pridobi velikost datoteke \ n"; echo "4. Pridobite velikost diska in prosti prostor \ n"; echo "5. Pridobi čas datotek \ n"; echo "\ nVnesite 0 do izhoda \ n"; echo "\ n \ nVaša izbira:"; $ selection = trim (fgets (STDIN)); } while (! (($ selection == "0") || ($ selection == "1") || ($ selection == "2") || ($ selection == "3") || ( $ selection == "4") || ($ selection == "5")))); switch ($ selection) {case "1": echo "Vnesite pot do datoteke:"; $ filePath = trim (fgets (STDIN)); $ filePathInfo = parseFilePath ($ filePath); echo $ filePathInfo; odmor; primer "2": echo "Enter path:"; $ filePath = trim (fgets (STDIN)); $ realPath = convertPathToAbsolute ($ filePath); echo $ realPath; odmor; primer "3": echo "Vnesite pot in ime datoteke:"; $ filePath = trim (fgets (STDIN)); $ sizeOfFile = getSizeOfFile ($ filePath); echo "File". $ filePath. "ima velikost". $ sizeOfFile. "bytes."; odmor; primer "4": echo "Vnesite oznako diska:"; $ diskLabel = trim (fgets (STDIN)); $ diskSpace = getDiskSizeAndFreeSpace ($ diskLabel); $ percentFree = $ diskSpace [1] / $ diskSpace [0]; echo "Disk". $ diskLabel. "has". $ diskSpace [1]. "of". $ diskSpace [0]. "prostih bajtov (" .round ($ percentFree * 100). "%)."; odmor; primer "5": echo "Vnesite datoteko, za katero želite, da je čas dostopa / spremenjen / spremenjen:"; $ filePath = trim (fgets (STDIN)); $ fileTimes = getFileTimes ($ filePath); echo "File". $ filePath. "je bil nazadnje dostopan v". $ fileTimes [0]. ", nazadnje spremenjen v". $ fileTimes [1]. "in nazadnje spremenjen v". $ fileTimes [2]; odmor; primer "0": privzeto: odmev "\ n \ n"; izhod (); } 

Preostali del skripta PHP vsebuje funkcije, ki uporabljajo in prikazujejo funkcije upravljanja datotečnega sistema PHP.

PHP ponuja funkcije za enostaven dostop do podrobnosti poti do datoteke, kot so imenik datoteke, polno ime same datoteke, pripona datoteke in ime datoteke brez pripone. Nekatere od teh so prikazane v zgornjem primeru v parseFilePath funkcija, ki se reproducira naprej. Funkcija prikazuje funkcije PHP za osnovno ime, ime in pot.

PHP zagotavlja informacije o poti datoteke

/ ** * Razčlenite navedeno datotečno pot. Prikaže naslednje funkcije PHP: * * - basename (): poda osnovni del poti do datoteke (ime datoteke). * - dirname (): Del imena datoteke v imeniku. * - pathinfo (): Vse komponente poti (osnovno ime, ime imenika, končnica). * * @param $ filePath Pot do datoteke, ki jo je treba razčleniti. * @return Informacije o poti datoteke v enem nizu. * / funkcija parseFilePath ($ filePath) {echo "Razčlenjevanje datoteke do datoteke ...", $ filePath, "\ n"; $ fileBaseName = osnovno ime ($ filePath); $ fileDirectoryName = ime_dirname ($ filePath); $ pathInfo = pathinfo ($ filePath); vrni "Ime datoteke:". $ fileBaseName. "\ nIme imenika:". $ fileDirectoryName. "\ nIme datoteke:". $ pathInfo ['basename']. "\ nIme imenika:". $ pathInfo ['dirname']. " \ nPripoteka datoteke: ". $ pathInfo ['pripona']." \ nIme datoteke brez pripone: ". $ pathInfo ['ime datoteke']; } 

Zdaj je prikazan izhod iz zagona zgoraj na primer datoteke.

PHP ponuja uporabno funkcijo realne poti, ki zagotavlja absolutno različico podane poti. Tako bo na primer razrešil mehke povezave in relativne imenike, da vrne absolutno pot. To je prikazano v convertPathToAbsolute funkcija v mojem primeru (in reproducirana v naslednjem seznamu kod).

Prikaz absolutnih poti prek realne poti

/ ** * Pretvori določeno pot v absolutno pot. * * @param $ filePath Pot do datoteke mora biti absolutna. * @return Absolutna različica podane poti do datoteke. * / function convertPathToAbsolute ($ filePath) {echo "Pretvorba poti datoteke", $ filePath, "v absolutno pot ... \ n"; vrni realpath ($ filePath); } 

Zgornji del skripta daje naslednje rezultate.

PHP olajša določanje velikosti datoteke s primerno imenovano funkcijo velikosti datotek. Moj getSizeOfFile funkcija to dokaže in je navedena sama v naslednjem seznamu kod.

Pridobivanje velikosti datoteke v PHP

/ ** * Določite velikost priložene datoteke. * * @param? $ filePath Pot in ime datoteke, katere velikost je potrebna. * @return Velikost datoteke je navedena s priloženo potjo in imenom datoteke (v bajtih). * / funkcija getSizeOfFile ($ filePath) {echo "Pridobivanje velikosti datoteke", $ filePath, "... \ n"; vrni velikost datoteke ($ filePath); } 

Koda vodi do izhoda, prikazanega na naslednji sliki.

PHP omogoča tudi enostavno pridobivanje informacij o prostoru na disku. PHP-jevi funkciji disk_total_space in disk_free_space so prikazani v spodnjem seznamu kod za mojo funkcijo getDiskSizeAndFreeSpace.

Velikost diska PHP in prosti prostor

/ ** * Navedite velikost diska in prosti prostor na disku za priloženi disk. * * @param $ diskLabel Oznaka diska, katerega skupna velikost in prosti prostor mora biti *. * @return Niz dveh elementov, od katerih je prvi skupni prostor na disku (v bajtih) *, drugi pa prosti prostor na disku (v bajtih). * / funkcija getDiskSizeAndFreeSpace ($ diskLabel) {vrni polje (disk_total_space ($ diskLabel), disk_free_space ($ diskLabel)); } 

Zgornji primer ne prikazuje samo PHP-jevih funkcij disk_total_space in disk_free_space, temveč prikazuje tudi uporabo funkcije array PHP za ustvarjanje matrike in postavitev elementov znotraj matrike v en stavek.

Rezultat tega dela skripta je prikazan naslednji.

Končna funkcija v mojem skriptu je getFileTimes njegov namen je prikazati tri metode PHP za dostop do datumov / ur, povezanih z datotekami. Natančneje, prikazane so funkcije datoteke, časa in časa datoteke.

Časi datotek PHP

$config[zx-auto] not found$config[zx-overlay] not found