Při vytváření programu je často nutné mazat soubory (důvody mohou být velmi různé) a v tomto případě nám pomůže odpojení php. Dnes se naučíme mazat soubory v PHP a podíváme se na pár příkladů.

Odstraňte soubory pomocí Unlink PHP

Funkce unlink() se používá k mazání souborů. Syntaxe této funkce je:

odpojit (název souboru)

Tato funkce je logická, a proto vrací TRUE při úspěšném odstranění souboru a FALSE při selhání. Zvažte použití unlink() Například:

Je třeba poznamenat, že při opětovném načtení této stránky program vygeneruje chybu. To je způsobeno tím, že při prvním zavolání funkce již soubor smazala a při příštím jej nemůže najít.

Existuje několik způsobů, jak tento problém vyřešit. Můžete například použít složitější vnitřní architekturu programu pomocí podmíněné příkazy pokud . Nebo jen vložte symbol @ před samotnou funkci, abyste ignorovali chyby, které se vyskytnou. V tomto případě, i když soubor nebude nalezen, nebude vyvolána žádná chyba:

Mazání souborů v PHP pomocí unlinku není vůbec těžké, jak se říká, rozbití se nestaví. Příště se naučíme, jak zkontrolovat stav souborů.

PHP je programovací jazyk primárně používaný k vytváření dynamických webových stránek. Stejně jako každý jiný programovací jazyk obsahuje PHP spoustu funkcí, mezi nimiž je spousta užitečných. Například možnost smazat soubor, což můžete využít ve svých skriptech.

Tento tip vám pomůže zjistit, jak na to smazat soubor v php pomocí funkce odpojit.

Návod krok za krokem:

Chcete-li smazat soubor v PHP, můžete použít funkci odpojit. Na příkladu jednoduchého skriptu analyzujme práci odpojit:

  1. Vytvořit textový soubor v textový editor(vi/vim, nano, gedit nebo jen standardní Poznámkový blok).
  2. Zadejte nebo zkopírujte do něj následující kód:$file="example.log";
    unlink($file);
    ?>
  3. Uložte (například pod názvem testunlink.php) a umístěte vygenerovaný soubor skriptu na váš testovací web server. Ve stejném adresáři vytvořte soubor example.log s libovolným obsahem. To je to, co se chystáme odstranit.
  4. Spusťte skript jeho voláním v prohlížeči a když se znovu podíváte do adresáře, zjistíte, že soubor example.log tam již není. Odpojit udělal svou práci!

Jak to celé funguje:

První řádek kódu skriptu: definujeme typ našeho skriptu.

Druhý řádek kódu: Po spuštění skriptu, který jsme vytvořili, bude proměnné souboru přiřazena hodnota example.log(všimněte si, že soubor se stejným názvem musí být přítomen ve stejném adresáři jako skript, který jsme vytvořili. Stačí jej vytvořit s libovolným obsahem!).

Třetí řádek kódu: Odstraňte soubor example.log jeho předáním jako argument funkci unlink.

Čtvrtý řádek kódu skriptu: konec kódu php.

Pokusme se vyřešit jednoduchý úkol smazání jednoho souboru nebo několika souborů pomocí PHP. Obecně zde není nic složitého, ale existuje mnoho detailů a řešení, o kterých byste měli vědět. Ve svém článku se nezavazuji přijmout nezměrnost, ale myslím, že mohu vysvětlit několik otázek a uvést několik příkladů. Můžeme začít?

Funkce PHP unlink().

A začnu funkcí unlink() php, která odstraní soubor:

bool odpojit(tětiva$filename[, zdroj$context])

Zde $filename je cesta k souboru a $context (volitelné) je popis kontextů pro práci se streamy (podporováno v PHP od 5.0.0). Funkce vrátí TRUE při úspěchu nebo FALSE při chybě.

Příklad použití funkce unlink() php:

$filename = "./cesta/k/souboru.txt";

Proč se tato funkce nazývá unlink()?

Unixový souborový systém totiž rozlišuje mezi fyzickým umístěním souborů na médiu a odpovídající adresářovou strukturou. Tedy při ukládání souboru v určitém okamžiku souborový systém tento bod ve stromu adresářů je spojen s fyzickým umístěním, kde jsou uložena data souboru. Jinými slovy, cesta k souboru Unix je ve skutečnosti jedinečným identifikátorem jednoho z těchto uzlů.

Je také pozoruhodné, že v Unixu je možné přiřadit několik takových bodů ke stejným datům. Taková data budou existovat, pokud na ně bude existovat alespoň jeden odkaz. Ale pokud budou zničeny všechny odkazy, budou zničena i samotná data. Funkce unlink() je tedy navržena k odstranění odkazů, a to již jako důsledek dat souboru.

Ve Windows nic takového neexistuje a funkce unlink() soubor odstraní. Některé verze PHP pro Windows navíc unlink() vůbec nepodporují. V tomto případě se příkaz del používá prostřednictvím system() nebo exec() , například:

$filename = "/2014/04/soubor.txt";
if (isset($_ENV["WINDIR"])) (
@exec("del ". $název souboru);
if (file_exists($filename)) die("Chyba při smazání souboru.");
) else if (!(@unlink($filename))) (
die("Chyba při smazání souboru.");
}

V tomto případě může sloužit proměnná prostředí $_ENV["WINDIR"] popisovač pomocí platformy Windows a kontrola, zda byl soubor smazán, se provádí pomocí funkce php file_exists() , která zkontroluje existenci souboru.

Jak odstranit soubor(y) v PHP?

V některých případech se může stát, že funkce unlink() nebude mít přístup ke smazání souboru, tzn. dostaneme chybu : přístup odepřen. Může to být způsobeno nesprávně zadanou cestou k souboru nebo chybějícími přístupovými právy.

Zajímavou možností pro práci s cestami k souborům je použití funkcí getcwd() php (získá název aktuálního pracovního adresáře) a chdir() (změní aktuální adresář na určený), například:

$file_path = "cesta/k";
$název_souboru = "/2014/04/soubor.txt";
$starý = getcwd();
if (!(@chdir($cesta_souboru))) die("Chyba otevřít cestu.");
if (!(@unlink($file_name))) die("Chyba při smazání souboru.");
chdir($old);

Jak vidíte, je snazší navigovat a nějakým způsobem problém sledovat. Zároveň nebude zbytečné se po provedení smazání vracet do aktuálního $starého adresáře.

Pokud jde o problémy s přístupem, zde můžete zkusit použít funkci php chmod () (změní režim přístupu k souboru), například:

$filename = "/2014/04/cesta/k/souboru.txt";
@chmod($název souboru, 0666);
if (!(@unlink($filename))) die("Chyba při smazání souboru.");

Pokud potřebuješ odstranit všechny soubory v adresáři je vhodné použít kombinaci php funkcí array_map(). (použije funkci zpětného volání na všechny prvky pole) a glob() (najde cesty k souboru, které odpovídají vzoru), například:

array_map("odpojit", glob("nějaký/adresář/*.txt"));

Řešení problému multithreadingu při mazání souborů

Mnohem obtížnější, pokud jde o velké weby, kde existuje velké množství současných požadavků (vlákna) na skript. Řešení je zde celá řada. Dám jen jeden z nich, hlavní je použít semafory.

jako takový, semafor slouží jako druh popisovač proces. Když je semafor získán jedním procesem, jeho hodnota se sníží o jedničku a po uvolnění se zvýší o jedničku. V tomto případě, pokud je aktuální hodnota semaforu nula, proces ji nebude schopen zachytit a bude čekat na uvolnění semaforu.

Funkce sem_get() se používá k získání prostředku semaforu. Funkce může získat semafor s hodnotou odlišnou od jedné a poté může semafor zachytit několik vláken. K zachycení se používá funkce sem_acquire(). Příklad:

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

Všimněte si, že se zde používá další kontrola existence souboru file_exists(). Jde o to, že když první vlákno získá semafor, smaže soubor a uvolní semafor, druhé vlákno může pokračovat v provádění, aniž by smazal soubor, který již neexistuje.

Důležitou roli zde hraje funkce sem_remove(), která uvolní zaneprázdněný semafor. Pokud semafor neuvolní, zůstane paralelní vlákno ve stavu čekání až do konce aktuálního. Funkce tedy musí být mimo podmínku.

To je z mé strany vše. Doufám, že můj článek byl pro vás užitečný nebo jen informativní. Děkuji za pozornost. Hodně štěstí!

v 8:00 Upravit zprávu

Pokračujeme v lekci, která je věnována tématu " Práce se soubory PHP". Pokud jste nečetli předchozí, doporučuji si ji přečíst a kdo ji přečetl, pokračujte dál. V této lekci se naučíte, jak odstranit vytvořený nebo existující soubor pomocí pomocí PHP, zkopírujte nebo přejmenujte, uzamkněte soubor.
No, pokud jste připraveni, jděte do bitvy...

Smazání souboru v PHP

Pokud potřebujete odstranit soubor, použijte funkci unlink() PHP:

unlink(název souboru);

Název souboru – Zde zadejte název souboru, který chcete smazat.

Řekněme, že potřebujeme smazat soubor " file.txt ", příklad pro vyplnění bude tento:

Unlink("soubor.txt");

Hotový kód:

Pokud byl přítomen soubor "file.txt", jeho skript je odstraněn.

Kopírování souboru v PHP

Pokud potřebujete zkopírovat obsah z jednoho souboru do druhého, použijte funkci copy() PHP.

Copy("soubor1", "soubor2");

Soubor1 - název souboru, ze kterého bude text zkopírován
- soubor2 - název souboru, do kterého bude text zkopírován

Vytvořte například soubor s názvem "file2.txt" na místním serveru ve složce "test-1". Nechte soubor prázdný. Nyní vložte tento kód copy("soubor.txt", "soubor2.txt"); v php kódu "file.php":

Co jsme udělali? Vytvořil soubor s názvem „file.txt“ přes PHP, provedl záznam do souboru „file.txt“ přes PHP „ Jsem rád, že tě vidím na blogu ", zobrazil výsledek v prohlížeči, zkopíroval text ze souboru" soubor.txt"A vložil do souboru" soubor2.txt». Nevěříte, že se to stalo? Pamatujete si, že soubor "file2.txt" byl prázdný?! Otevři to! a co vidíš? Ano, je to tak, text, který byl v souboru "file.txt":

Přejmenování souboru v PHP

Chcete-li přejmenovat soubor, použijte funkci PHP rename():

Přejmenovat("soubor1", "soubor2");

File1 je název souboru, který má být nahrazen ( přejmenovat)
- soubor2 - zde musíte zadat nový název souboru

Zde je příklad k vyplnění:

Rename("file2..txt");

Tady hotový kód:

Soubor " file2.txt"Přejmenován na soubor" site.txt".

Myslím, že tím by naše lekce měla skončit. To ale není vše, v další lekci budeme pokračovat v práci se soubory.