Programovanie

Správa súborového systému s PHP

Predtým som blogoval o použití PHP na príkazovom riadku, ale v záujme veľkosti blogového príspevku som sa nezaoberal použitím PHP na prístup k súborovému systému v tomto príspevku. Tento príspevok používam na pokrytie niektorých základných informácií o správe súborového systému PHP.

Mnohí z nás, ktorí píšeme a používame skripty, tak robíme pre funkcie súvisiace so súborovým systémom. Skriptujeme akcie, ktoré bežne vykonávame v súborovom systéme. Konkrétne často potrebujeme kopírovať súbory, premenovávať ich, odstraňovať a otvárať a zatvárať súbory. Často musíme vykonávať určitú logiku založenú na určitých vlastnostiach súborov a adresárov. Bolo by ťažké vážne považovať jazyk za skriptovací jazyk bez slušnej podpory súborového systému. Našťastie má PHP zabudovanú podporu pre správu súborového systému. Túto podporu je možné použiť v spojení s príkazovým riadkom PHP.

W3Schools.com je osvedčený cenný zdroj pre učenie sa o webových technológiách a ich pokrytie funkciami súborového systému PHP je ďalším príkladom. Stránka nám pripomína, že funkcie súborového systému PHP „sú súčasťou jadra PHP“ a „umožňujú vám prístup k súborovému systému a manipuláciu s ním“. Ešte dôležitejšie je, že táto stránka tiež sumarizuje podrobnosti o konfigurácii súborového systému PHP, funkcie súborového systému PHP a konštanty súborového systému PHP. Kliknutím na názov funkcie sa dostanete na stránku s ďalšími podrobnosťami o tejto funkcii a príkladom kódu PHP, ktorý túto funkciu používa. Pretože v tomto príspevku uvediem iba ich podmnožinu, chcel som sa uistiť, že sa na túto stránku W3Schools pozriem skôr.

Nasledujúci skript, demoPhpFileSystemManagement.php, demonštruje niekoľko funkcií PHP na určovanie informácií o súbore. Uvádzam tu celý scenár a potom, keď o nich diskutujem, znova reprodukujem ich časti.

demoPhpFileSystemManagement.php

#! / usr / bin / php 

Predtým, ako sa podrobnejšie venujem funkciám súborového systému PHP použitým vo vyššie uvedenom príklade, som v tomto kóde PHP pozoroval svoje pozadie Javy. Napríklad pre funkcie v kóde som použil komentáre v štýle Javadoc. Našťastie PHPDocumentor pri generovaní dokumentácie k kódu rešpektuje komentáre v štýle Javadoc. Vyššie uvedený kód tiež demonštruje rozdiel v názvových konvenciách, na ktoré som zvyknutý v Jave (prípad ťavy), a v konvenciách pomenovania v PHP (všetky malé názvy so slovami oddelenými podčiarkovníkmi), ako to ukazujú vyvolané funkcie PHP.

Prvá časť skriptu PHP poskytuje jednoduché textové menu príkazového riadku, ktoré užívateľa vyzýva na zadanie možností a názvov súborov a ciest. Tento útržok kódu sám o sebe nerobí s funkciami súborového systému PHP, ale demonštruje štandardný vstup a výstup PHP a príkaz PHP switch. Táto prvá časť je tu reprodukovaná.

Ponuka príkazového riadku a spracovanie vstupu

do {echo "\ nKtorú prevádzku systému súborov PHP chcete spustiť? \ n \ n"; echo "1. Analyzovať informácie o ceste k súboru \ n"; echo "2. Získajte absolútnu cestu \ n"; echo "3. Získať veľkosť súboru \ n"; echo "4. Získať veľkosť disku a voľné miesto \ n"; echo "5. Získať časy súborov \ n"; echo "\ nZadajte 0 až ukončíte \ n"; echo "\ n \ nVaša voľba:"; $ selection = trim (fgets (STDIN)); } while (! (($ selection == "0") || ($ selection == "1") || ($ selection == "2") || ($ selection == "3") || ( $ selection == "4") || ($ selection == "5"))); switch ($ selection) {case "1": echo "Zadajte cestu k súboru:"; $ filePath = trim (fgets (STDIN)); $ filePathInfo = parseFilePath ($ filePath); echo $ filePathInfo; prestávka; case "2": echo "Enter path:"; $ filePath = trim (fgets (STDIN)); $ realPath = convertPathToAbsolute ($ filePath); echo $ realPath; prestávka; prípad "3": echo "Zadajte cestu a názov súboru:"; $ filePath = trim (fgets (STDIN)); $ sizeOfFile = getSizeOfFile ($ filePath); echo "Súbor". $ filePath. "má veľkosť". $ sizeOfFile. "bajtov."; prestávka; case "4": echo "Enter disk label:"; $ diskLabel = trim (fgets (STDIN)); $ diskSpace = getDiskSizeAndFreeSpace ($ diskLabel); $ percentuálny podiel zadarmo = $ diskSpace [1] / $ diskSpace [0]; echo "Disk". $ diskLabel. "has". $ diskSpace [1]. "of". $ diskSpace [0]. "bytes free (" .round ($ percentFree * 100). "%)."; prestávka; case "5": echo "Enter a file who access / changed / modified times are desired:"; $ filePath = trim (fgets (STDIN)); $ fileTimes = getFileTimes ($ filePath); echo "File". $ filePath. "bol naposledy prístupný dňa". $ fileTimes [0]. ", naposledy zmenený dňa". $ fileTimes [1]. "a naposledy zmenený dňa". $ fileTimes [2]; prestávka; prípad "0": predvolené: echo "\ n \ n"; východ(); } 

Zvyšok skriptu PHP obsahuje funkcie, ktoré využívajú a demonštrujú funkcie správy súborového systému PHP.

PHP poskytuje funkcie pre ľahký prístup k podrobnostiam cesty k súboru, ako je adresár súboru, celé meno samotného súboru, prípona súboru a názov súboru bez prípony. Niektoré z nich sú demonštrované vo vyššie uvedenom príklade v dokumente parseFilePath funkcia, ktorá sa reprodukuje ďalej. Táto funkcia zobrazuje funkcie bazename, dirname a pathinfo PHP.

PHP poskytuje informácie o ceste k súboru

/ ** * Analyzuje poskytnutú cestu k súboru. Ukazuje nasledujúce funkcie PHP: * * - basename (): Poskytuje základnú časť cesty k súboru (názov súboru). * - dirname (): časť názvu priečinka v ceste k súboru. * - pathinfo (): Všetky komponenty cesty (základné meno, názov adresára, prípona). * * @param $ filePath Cesta k súboru, ktorá sa má analyzovať. * @return Informácie o ceste k súboru v jednom reťazci. * / function parseFilePath ($ filePath) {echo "Analýza cesty k súboru ...", $ filePath, "\ n"; $ fileBaseName = basename ($ filePath); $ fileDirectoryName = dirname ($ filePath); $ pathInfo = pathinfo ($ filePath); vrátiť "Názov súboru:". $ fileBaseName. "\ nDirectoryName:". $ fileDirectoryName. "\ nFileName:". $ pathInfo ['basename']. "\ nDirectory Name:". $ pathInfo ['dirname']. " \ n Prípona súboru: ". $ pathInfo ['rozšírenie']." \ n Názov súboru bez prípony: ". $ pathInfo ['názov súboru']; } 

Teraz sa zobrazuje výstup zo spustenia vyššie uvedeného oproti vzorovému súboru.

PHP poskytuje užitočnú funkciu realpath, ktorá poskytuje absolútnu verziu poskytnutej cesty. Napríklad vyrieši mäkké odkazy a relatívne adresáre, aby vrátila absolútnu cestu. To sa preukazuje v convertPathToAbsolute funkcia v mojom príklade (a reprodukovaná v nasledujúcom zozname kódov).

Ukážka absolútnych ciest cez realpath

/ ** * Preveďte zadanú cestu na absolútnu cestu. * * @param $ filePath Cesta k súboru bude absolútna. * @return Absolútna verzia poskytnutej cesty k súboru. * / function convertPathToAbsolute ($ filePath) {echo "Prevod cesty k súboru", $ filePath, "na absolútnu cestu ... \ n"; return realpath ($ filePath); } 

Vyššie uvedená časť skriptu produkuje nasledujúci výstup.

Vďaka PHP je možné ľahko určiť veľkosť súboru pomocou vhodne pomenovanej funkcie veľkosť súboru. Môj getSizeOfFile funkcia to demonštruje a je uvedená samostatne v nasledujúcom zozname kódov.

Získanie veľkosti súboru v PHP

/ ** * Určte veľkosť poskytovaného súboru. * * @param? $ filePath Cesta a názov súboru, ktorého veľkosť je potrebná. * @return Veľkosť súboru je uvedená zadanou cestou a názvom súboru (v bajtoch). * / function getSizeOfFile ($ filePath) {echo "Získavam veľkosť súboru", $ filePath, "... \ n"; vrátiť veľkosť súboru ($ filePath); } 

Kód vedie k výstupu zobrazenému na nasledujúcom obrázku.

PHP tiež uľahčuje získanie informácií o diskovom priestore. Funkcie PHP disk_total_space a disk_free_space sú uvedené v zozname kódov nižšie pre moju funkciu getDiskSizeAndFreeSpace.

Veľkosť disku PHP a voľné miesto

/ ** * Poskytnite veľkosť disku a voľné miesto na disku pre poskytnutý disk. * * @param $ diskLabel Štítok disku, ktorého celkovú veľkosť a voľné miesto je potrebné uviesť *. * @return Pole dvoch prvkov, z ktorých prvý je celkové miesto na disku (v bajtoch) * a druhý z nich je voľné miesto na disku (v bajtoch). * / funkcia getDiskSizeAndFreeSpace ($ diskLabel) {návratové pole (disk_total_space ($ diskLabel), disk_free_space ($ diskLabel)); } 

Vyššie uvedený príklad demonštruje nielen funkcie disk_total_space a disk_free_space v prostredí PHP, ale tiež demonštruje použitie funkcie poľa v PHP na vytvorenie poľa a umiestnenie prvkov do poľa v jednom príkaze.

Ďalej sa zobrazuje výstup z tejto časti skriptu.

Posledná funkcia v mojom skripte je getFileTimes a jeho účelom je demonštrovať tri metódy PHP na prístup k dátumom / časom spojeným so súbormi. Konkrétne sú demonštrované funkcie fileatime, filectime a filemtime.

Časy súborov PHP

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