Gyakran előfordul, hogy egy program létrehozásakor fájlok törlésére van szükség (az okok nagyon eltérőek lehetnek), és ilyenkor a php leválasztása jön a segítségünkre. Ma megtanuljuk, hogyan törölhetünk fájlokat PHP-ben, és nézzünk meg néhány példát.

Fájlok törlése PHP leválasztásával

Fájlok eltávolításához használja az unlink() függvényt. Ennek a függvénynek a szintaxisa a következő:

leválasztás (fájlnév)

Ez a függvény logikai, ezért TRUE értéket ad vissza, ha a fájl sikeresen törlődik, és FALSE-t, ha sikertelen. Fontolja meg a használatát unlink() Például:

Megjegyzendő, hogy az oldal újbóli betöltésekor a program hibát generál. Ez annak köszönhető, hogy a függvény első meghívásakor már törölte a fájlt, és a következő alkalommal nem tudta észlelni.

Számos módja van ennek a problémának a megoldására. Használhat például egy bonyolultabb belső programarchitektúrát a használatával feltételes állítások ha . Vagy elég a @ szimbólumot maga a függvény elé tenni, hogy figyelmen kívül hagyjuk az előforduló hibákat. Ebben az esetben, ha a fájl nem található, a hiba nem jelenik meg:

A fájlok törlése PHP-ben az unlink segítségével egyáltalán nem nehéz, ahogy mondják, a feltörés nem épít. Legközelebb megtanuljuk, hogyan ellenőrizhetjük a fájlok állapotát.

A PHP egy programozási nyelv, amelyet elsősorban dinamikus weboldalak létrehozására használnak. Csakúgy, mint bármely más programozási nyelv, a PHP is sok funkciót tartalmaz, köztük sok hasznosat is. Például egy fájl törlésének lehetősége, amelyet felhasználhat a szkriptekben.

Ez a tipp segít megtanulni, hogyan fájl törlése PHP-ben funkció használatával szétkapcsolás.

Lépésről lépésre szóló utasítás:

Fájl törléséhez PHP-ben használhatja a függvényt szétkapcsolás. Egy egyszerű szkriptet használva példaként, nézzük meg, hogyan működik szétkapcsolás:

  1. Teremt szöveges fájl V szöveg szerkesztő(vi/vim, nano, gedit vagy csak normál Jegyzettömbben).
  2. Írja be vagy egyszerűen másolja be a következő kódot:$file="example.log";
    unlink($file);
    ?>
  3. Mentse el (például testunlink.php néven), és helyezze el a létrehozott szkriptfájlt a teszt webszerverére. Ugyanabban a könyvtárban hozzon létre egy example.log fájlt bármilyen tartalommal. Ezt töröljük.
  4. Futtassa a szkriptet úgy, hogy meghívja a böngészőben, és amikor újra megnézi a könyvtárat, azt fogja látni, hogy az example.log fájl már nincs ott. Leválasztás megcsinálta a trükköt!

Hogyan működik az egész:

A szkriptkód első sora: meghatározzuk a szkriptünk típusát.

Második kódsor: Az általunk létrehozott szkript futtatása után a fájlváltozóhoz hozzárendeljük az értéket example.log(megjegyzendő, hogy az azonos nevű fájlnak ugyanabban a könyvtárban kell lennie, mint az általunk készített szkriptnek. Csak hozza létre bármilyen tartalommal!).

Harmadik kódsor: Törölje az example.log fájlt úgy, hogy argumentumként adja át a leválasztási függvénynek.

A script kód negyedik sora: a php kód vége.

Próbáljunk meg egy egyszerű problémát megoldani egy vagy több fájl törlésével PHP segítségével. Általánosságban elmondható, hogy itt nincs semmi bonyolult, de sok részletet, valamint megoldást érdemes tudni. Cikkemben nem vállalkozom a mérhetetlenség felkarolására, de azt hiszem, meg tudok magyarázni egy-két kérdést, és hozok néhány példát. Kezdjük?

PHP függvény unlink()

Kezdem a php unlink() függvénnyel, amely törli a fájlt:

bool szétkapcsolás(húr$fájlnév[, forrás$context ])

Itt a $fájlnév a fájl elérési útja, a $context (opcionális) pedig a szálakkal való munkakörnyezet leírása (5.0.0 óta PHP-ben támogatott). A függvény siker esetén IGAZ értéket, hiba esetén pedig HAMIS értéket ad vissza.

Példa az unlink() php függvény használatára:

$fájlnév = "./elérési út/fájlhoz.txt";

Miért hívják ezt a függvényt unlink()-nek?

A helyzet az, hogy a Unix fájlrendszerben különbséget tesznek a fájlok fizikai helye az adathordozón és a megfelelő könyvtárstruktúra között. Ezért egy fájl mentésekor egy bizonyos ponton fájlrendszer a könyvtárfa ezen pontja ahhoz a fizikai helyhez van társítva, ahol a fájladatokat tárolják. Más szavakkal, a Unix-fájl elérési útja valójában ezen csomópontok egyikének egyedi azonosítója.

Egy másik érdekesség itt, hogy Unixban több ilyen pontot is társíthatunk ugyanazokhoz az adatokhoz. Ezek az adatok mindaddig léteznek, amíg legalább egy hivatkozás van rájuk. De ha minden link megsemmisül, akkor maga az adat is megsemmisül. Így az unlink() függvény kifejezetten a hivatkozások eltávolítására szolgál, és a fájladatok következtében.

Windowsban nincs ilyen, és az unlink() függvény törli a fájlt. Ezenkívül a PHP egyes Windows-verziói egyáltalán nem támogatják az unlink() funkciót. Ebben az esetben használja a del parancsot a system() vagy az exec() segítségével, például:

$fájlnév = "/2014/04/file.txt";
if (isset($_ENV["WINDIR"])) (
@exec("del ". $fájlnév);
if (file_exists($fájlnév)) die("Hiba a fájl törlése.");
) else if (!(@unlink($fájlnév))) (
die("Hiba a fájl törlése.");
}

Ebben az esetben a $_ENV["WINDIR"] környezeti változó szolgálhat jelző Windows platform használatával, a fájltörlés ellenőrzése pedig a file_exists() PHP függvényen keresztül történik, amely ellenőrzi a fájl meglétét.

Hogyan lehet fájlokat törölni PHP-ben?

Bizonyos esetekben előfordulhat, hogy az unlink() függvény nem fér hozzá egy fájl törléséhez, pl. hibát kapunk : hozzáférés megtagadva. Ennek oka lehet a helytelenül megadott fájlútvonal vagy a hozzáférési jogok hiánya.

A fájl elérési útjaival való munka egy érdekes lehetőség a PHP getcwd() függvényeinek használata. (lekéri az aktuális munkakönyvtár nevét)és chdir() (az aktuális könyvtárat a megadottra módosítja), Például:

$file_path = "útvonal/hoz";
$file_name = "/2014/04/file.txt";
$régi = getcwd();
if (!(@chdir($fájl_útvonal))) die("Hiba nyitott elérési út.");
if (!(@unlink($file_name))) die("Hiba a fájl törlésekor.");
chdir($régi);

Amint látja, ez megkönnyíti a navigációt és a probléma nyomon követését. Ugyanakkor a törlés befejezése után célszerű lenne visszatérni az aktuális $old könyvtárba.

Ami a hozzáférési problémákat illeti, itt kipróbálhatja a chmod() php függvényt (módosítja a fájl hozzáférési módot), Például:

$fájlnév = "/2014/04/elérési út/a/fájlhoz.txt";
@chmod($fájlnév, 0666);
if (!(@unlink($fájlnév))) die("Hiba a fájl törlésekor.");

Ha szükséged van törölje az összes fájlt a könyvtárban kényelmes a php függvények kombinációja array_map() (a visszahívási függvényt minden tömbelemre alkalmazza)és glob() (megkeresi a mintának megfelelő fájl elérési utat), Például:

array_map("unlink", glob("some/dir/*.txt"));

A többszálú feldolgozás problémájának megoldása fájlok törlésekor

Sokkal nehezebb, ha nagy webhelyekről van szó, ahol nagyszámú egyidejű kérés (szál) érkezik a szkripthez. Itt számos megoldás létezik. Csak egyet adok belőlük, a fő a felhasználás szemaforok.

Mint olyan, szemafor egyedülállóként szolgál jelző folyamat. Ha egy szemafort egy folyamat rögzít, akkor annak értéke eggyel csökken, elengedéskor pedig eggyel nő. Ha azonban a szemafor aktuális értéke nulla, a folyamat nem tudja megszerezni azt, és megvárja, amíg a szemafor felszabadul.

Szemafor erőforrás lekéréséhez használja a sem_get() függvényt. Egy függvény kaphat egy szemafortól eltérő értékű szemafort, majd több szál is megszerezheti a szemafort. Az adatgyűjtéshez a sem_acquire() függvény szolgál. Példa:

$sem = sem_get(1);
if (sem_acquire($sem) && file_exists($filename)) @unlink($filename);
sem_remove($sem);

Vegye figyelembe, hogy ez a fájl létezésének további ellenőrzését használja, a file_exists() . A lényeg az, hogy amikor az első szál megszerzi a szemafort, törli a fájlt és felszabadítja a szemafort, a második szál folytathatja a végrehajtást a már nem létező fájl törlése nélkül.

Itt fontos szerepet játszik a sem_remove() függvény, amely egy foglalt szemafort szabadít fel. Ha a szemafort nem engedik el, a párhuzamos szál várakozó állapotban marad, amíg az aktuális be nem fejeződik. Ezért a függvénynek a feltételen kívül kell lennie.

Ez mindenem. Remélem, hogy cikkem hasznos volt számodra, vagy csak informatív volt. Köszönöm a figyelmet. Sok szerencsét!

8:00 órakor Üzenet szerkesztése

Folytatjuk a leckét, amelyet a témának szentelünk PHP fájlokkal való munka" Aki nem olvasta az előzőt, annak ajánlom, hogy olvassa el, aki pedig olvasta, haladjon tovább. Ebből az oktatóanyagból megtudhatja, hogyan törölhet egy létrehozott vagy meglévő fájlt PHP használatával, másolja vagy nevezze át, zárolja a fájlt.
Nos, ha készen állsz, akkor menj harcba...

Fájl törlése PHP-ben

Ha bármilyen fájlt törölnie kell, használja a PHP unlink() függvényét:

Unlink(fájlnév);

Fájlnév – ide írja be a törölni kívánt fájl nevét.

Tegyük fel, hogy törölnünk kell a „file.txt” fájlt, a kitöltendő példa a következő:

Unlink("file.txt");

Kész kód:

Ha a "file.txt" fájl jelen volt, a szkript törölte azt.

Fájl másolása PHP-ben

Ha tartalmat kell átmásolnia egyik fájlból a másikba, használja a PHP copy() függvényt.

Copy("fájl1", "fájl2");

Fájl1 – fájlnév, ahonnan a szöveg másolásra kerül
- fájl2 – fájlnév, ahová a szöveg másolásra kerül

Például hozzon létre egy „file2.txt” nevű fájlt a helyi szerveren a „test-1” mappában. Legyen üres a fájl. Most illesszük be ezt a kódot copy("fájl.txt", "fájl2.txt"); php-ban a „file.php” kód:

Mit tettünk? Létrehozott egy "file.txt" nevű fájlt PHP-n keresztül, és bejegyzést tett a "file.txt" fájlba PHP-n keresztül " Örülök, hogy látlak a blog oldalon ", megjelenítette az eredményt a böngészőben, kimásolta a szöveget a "file.txt" fájlból, és beillesztette a "file2.txt" fájlba. Nem hiszed el, hogy ez megtörtént? Emlékszel, hogy a „file2.txt” fájl üres volt?! Nyisd ki! És mit látsz? Igen, ez igaz, a szöveg, ami a „file.txt” fájlban volt:

Fájl átnevezése PHP-ben

Fájl átnevezéséhez használja a PHP rename() függvényét:

Átnevezés("fájl1", "fájl2");

File1 – a cserélendő fájl neve ( átnevezni)
- file2 – itt új fájlnevet kell megadni

Íme egy kitöltendő példa:

Rename("file2..txt");

Itt kész kód:

A „file2.txt” fájl át lett nevezve „site.txt” fájlra.

Szerintem itt kellene befejeznünk a leckét. De ez még nem minden, a következő leckében folytatjuk a fájlokkal való munkát.