Funktionen flock
Funktionen flock anvender eller fjerner en lås på en fil. Den tager som første parameter en filhåndtag, opnået via fopen, som anden parameter - en låsetype (LOCK_SH, LOCK_EX eller LOCK_UN), og som tredje valgfri parameter - et flag for ikke-blokerende operation.
Syntaks
flock(resource $handle, int $operation, int &$would_block = null): bool
Eksempel
Låsning af fil for eksklusiv adgang (skrivning):
<?php
$file = fopen("data.txt", "c+");
if (flock($file, LOCK_EX)) {
ftruncate($file, 0);
fwrite($file, "Nye data");
flock($file, LOCK_UN);
}
fclose($file);
?>
Eksempel
Delt lås for 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;
?>
Eksempel
Ikke-blokerende forsøg på at opnå lås:
<?php
$file = fopen("data.txt", "c+");
if (flock($file, LOCK_EX | LOCK_NB, $would_block)) {
if ($would_block) {
echo "Filen er låst af en anden proces";
} else {
fwrite($file, "Data");
flock($file, LOCK_UN);
}
}
fclose($file);
?>
Se også
-
funktionen
fopen,
som åbner en fil -
funktionen
fclose,
som lukker en fil -
funktionen
is_writable,
som kontrollerer skriveadgang