flock

 

PHP -> Funkcie -> Súborové funkcie PHP -> funkcia flock

Syntax


bool flock ( resource deskriptor, int operácia [, int &mód_wouldblock] )

Popis


Príkaz jazyka PHP
flock -- Uzamkýna súbory metódou "portable advisory locking"

PHP podporuje "portable" spôsob uzamykania celých súborov spôsobom nazývaným "advisory", čo znamená, že všetky programy, ktoré pristupujú k súboru musia používať rovnaký spôsob uzamykania (v opačnom prípade uzamykanie nebude fungovať).

flock() pracuje s deskriptorom súboru; ten musí byť platný a odkazovať na úspešne otvorený súbor. Parameter operácia môže nadobúdať jednu z nasledovných hodnôt:
  • Na získanie zdieľaného uzamknutia čítania (shared lock - reader), nastavte parameter operácia na LOCK_SH (vo verziách starších ako PHP 4.0.1 nastavte na 1).
  • Na získanie výhradného uzamknutia zápisu (exclusive lock - writer), nastavte parameter operácia na LOCK_EX (vo verziách starších ako PHP 4.0.1 nastavte na 2).
  • Na odstránenie uzamknutia (zdieľaného, či výhradného), nastavte parameter operácia na LOCK_UN (vo verziách starších ako PHP 4.0.1 nastavte na 3).
  • Ak nechcete, aby počas priebehu uzamkýnania funkcia flock() blokovala súbor, pripočítajte k parametru operácia konštantu LOCK_NB (vo verziách starších ako pripočítajte 4).

Funkcia flock() dovoľuje realizovať jednoduchý model "čitateľ/zapisovateľ" (reader-writer) a to na takmer ľubovoľnej platforme (vrátane väčšiny systémov odvodených z Unix-u a dokonca na systémoch Windows). Tretí nepovinný parameter je nastavený na TRUE, ak uzamknutie by malo blokovať (chybová podmienka errno EWOULDBLOCK).

Vracia TRUE pri úspechu alebe FALSE pri chybe.

Poznámka: Pretože flock vyžaduje deskriptor súboru, na ochranu pred prístupom k súboru, ktorý mienite skrátiť otvorením v móde na zápis (použitím "w" resp. "w+" ako módu otvorenia vo funkcii fopen), by ste mali používať špeciálny uzamkýnací súbor.

Varovanie


Funkcia flock nebude pracovať na súborovom systéme NFS a ďalších sieťových súborových systémoch. Viac detailov nájdete v dokumentácii k vášmu operačnému systému.

Na niektorých operačných systémoch je flock implementovaný na úrovni procesov. Pri používaní viacvláknového aplikačného rozhrania servera (napr. ISAPI) sa nemožno týmto spôsobom spoliehať na ochranu súborov pred PHP skriptami, ktoré bežia v paralelných vláknach tej istej inštancie servera!

Funkcia flock nie je podporovaná na zastaraných súborových systémoch ako napr. FAT a ich odvodeninách. Preto funkcia v týchto prostrediach vracia vždy FALSE (napr. v prostredí Windows 98).



vytlačiť článok  hľadať súvisiace články 

Chat ku článku

Vyhľadávanie na stránke
Reklama
Náhodný obrázok
náhodný obrázok
Kontakty

Martin Kasman, M Software
Smreková 3095/23
Email: martin@kasman.sk

Telefón: 0908 270 294