flock

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

flock -- JednotnΘ "portable advisory" zamykßnφ souboru

Popis

bool flock ( int fp, 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!