Flock-funktio
Funktio flock asettaa tai poistaa tiedoston lukituksen. Ensimmäisenä parametrina se ottaa osoittimen tiedostoon, joka on saatu fopen:n kautta, toisena parametrina - lukituksen tyypin (LOCK_SH, LOCK_EX tai LOCK_UN), ja kolmantena valinnaisena parametrina - lipun ei-lukitsevalle toiminnalle.
Syntaksi
flock(resource $handle, int $operation, int &$would_block = null): bool
Esimerkki
Tiedoston lukitus eksklusiivista pääsyä varten (kirjoitusta varten):
<?php
$file = fopen("data.txt", "c+");
if (flock($file, LOCK_EX)) {
ftruncate($file, 0);
fwrite($file, "Uudet tiedot");
flock($file, LOCK_UN);
}
fclose($file);
?>
Esimerkki
Jaettu lukitus lukemista varten:
<?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;
?>
Esimerkki
Ei-lukitseva yritys saada lukitus:
<?php
$file = fopen("data.txt", "c+");
if (flock($file, LOCK_EX | LOCK_NB, $would_block)) {
if ($would_block) {
echo "Tiedosto on toisen prosessin lukitsema";
} else {
fwrite($file, "Tiedot");
flock($file, LOCK_UN);
}
}
fclose($file);
?>
Katso myös
-
funktion
fopen,
joka avaa tiedoston -
funktion
fclose,
joka sulkee tiedoston -
funktion
is_writable,
joka tarkistaa kirjoitusmahdollisuuden