Forum und email
flock

flock

(PHP 3 >= 3.0.7, PHP 4, PHP 5)

flock -- Jednotné "portable advisory" zamykání souboru

Popis

bool flock ( resource handle, int operation [, int &wouldblock] )

PHP podporuje "portable" způsob zamykání celých souborů na základě jednotného "advisory" principu (tzn. všechny přistupující programy musí používat tentýž systém zamykání, jinak to nebude fungovat).

flock() funguje na deskriptoru fp, který musí patřit otevřenému souboru. operation je jedna z následujících hodnot:

  • K získání sdíleného (shared) zámku (čtení) nastavte operation na LOCK_SH (resp. 1 u verzí do PHP 4.0.1).

  • K získání výhradního zámku (zápis) nastavte operation na LOCK_EX (resp. 2 u verzí do PHP 4.0.1).

  • K uvolnění zámku (sdíleného nebo výhradního) nastavte operation na LOCK_UN (resp. 3 u verzí do PHP 4.0.1).

  • Pokud nechcete, aby funkce flock() blokovala během zamykání, přidejte k operation hodnotu LOCK_NB (4 pro verze do PHP 4.0.1).

flock() umožnuje jednoduchý model čtení/zápis použitelný teoreticky na všech platformách (včetně většiny Unixů a nejspíš i Windows). Nepovinný třetí argument se nastaví na TRUE, pokud by zámek měl blokovat (EWOULDBLOCK errno podmínka).

flock() vrací TRUE při úspěchu, FALSE při chybě (např. když nelze vytvořit zámek).

Varování

Na většině operačních systémů je funkce flock() implementována na úrovni procesů. Při použití multithreadového serverového API (jako je ISAPI) nemůžete spoléhat na ochranu souborů proti jiným PHP skriptům běžícím v paralelních vláknech stejné instance serveru!