Funkcija flock
Funkcija flock nastavi ali odstrani zaklep datoteke. Kot prvi parameter sprejme kazalec na datoteko, pridobljen preko fopen, kot drugi parameter - vrsto zaklepa (LOCK_SH, LOCK_EX ali LOCK_UN), kot tretji neobvezni parameter pa zastavico za neblokirajočo operacijo.
Sintaksa
flock(resource $handle, int $operation, int &$would_block = null): bool
Primer
Zaklepanje datoteke za ekskluzivni dostop (zapisovanje):
<?php
$file = fopen("data.txt", "c+");
if (flock($file, LOCK_EX)) {
ftruncate($file, 0);
fwrite($file, "Novi podatki");
flock($file, LOCK_UN);
}
fclose($file);
?>
Primer
Deljeni zaklep za branje:
<?php
$file = fopen("data.txt", "r");
if (flock($file, LOCK_SH)) {
$content = fread($file, filesize("data.txt"));
flock($file, LOCK_UN);
}
fclose($file);
echo $content;
?>
Primer
Neblokirajoči poskus zajema zaklepa:
<?php
$file = fopen("data.txt", "c+");
if (flock($file, LOCK_EX | LOCK_NB, $would_block)) {
if ($would_block) {
echo "Datoteko je zaklenil drug proces";
} else {
fwrite($file, "Podatki");
flock($file, LOCK_UN);
}
}
fclose($file);
?>
Glejte tudi
-
funkcijo
fopen,
ki odpre datoteko -
funkcijo
fclose,
ki zapre datoteko -
funkcijo
is_writable,
ki preveri možnost zapisovanja