Functie flock
De functie flock stelt een bestandsvergrendeling in of wordt deze opgeheven. Als eerste parameter accepteert het een aanwijzer naar een bestand, verkregen via fopen, als tweede parameter het type vergrendeling (LOCK_SH, LOCK_EX of LOCK_UN), en als derde optionele parameter een vlag voor een niet-blokkerende operatie.
Syntaxis
flock(resource $handle, int $operation, int &$would_block = null): bool
Voorbeeld
Bestand vergrendelen voor exclusieve toegang (schrijven):
<?php
$file = fopen("data.txt", "c+");
if (flock($file, LOCK_EX)) {
ftruncate($file, 0);
fwrite($file, "Nieuwe data");
flock($file, LOCK_UN);
}
fclose($file);
?>
Voorbeeld
Gedeelde vergrendeling voor lezen:
<?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;
?>
Voorbeeld
Niet-blokkerende poging om een vergrendeling te verkrijgen:
<?php
$file = fopen("data.txt", "c+");
if (flock($file, LOCK_EX | LOCK_NB, $would_block)) {
if ($would_block) {
echo "Bestand is vergrendeld door een ander proces";
} else {
fwrite($file, "Data");
flock($file, LOCK_UN);
}
}
fclose($file);
?>
Zie ook
-
de functie
fopen,
die een bestand opent -
de functie
fclose,
die een bestand sluit -
de functie
is_writable,
die de schrijfbaarheid controleert