Funktionen flock
Funktionen flock sätter eller tar bort en fillås. Den tar som första parameter en filpekare, erhållen via fopen, som andra parameter - typen av lås (LOCK_SH, LOCK_EX eller LOCK_UN), och som tredje valfri parameter - en flagga för icke-blockerande operation.
Syntax
flock(resource $handle, int $operation, int &$would_block = null): bool
Exempel
Lås fil för exklusiv åtkomst (skrivning):
<?php
$file = fopen("data.txt", "c+");
if (flock($file, LOCK_EX)) {
ftruncate($file, 0);
fwrite($file, "New data");
flock($file, LOCK_UN);
}
fclose($file);
?>
Exempel
Delad lås för läsning:
<?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;
?>
Exempel
Icke-blockerande försök att erhålla lås:
<?php
$file = fopen("data.txt", "c+");
if (flock($file, LOCK_EX | LOCK_NB, $would_block)) {
if ($would_block) {
echo "File is locked by another process";
} else {
fwrite($file, "Data");
flock($file, LOCK_UN);
}
}
fclose($file);
?>
Se även
-
funktionen
fopen,
som öppnar en fil -
funktionen
fclose,
som stänger en fil -
funktionen
is_writable,
som kontrollerar skrivbarhet