Funcția flock
Funcția flock stabilește sau elimină blocarea unui fișier. Primul parametru pe care îl acceptă este un pointer la fișier, obținut prin fopen, al doilea parametru este tipul de blocare (LOCK_SH, LOCK_EX sau LOCK_UN), iar al treilea parametru opțional este un flag pentru operația non-blocantă.
Sintaxă
flock(resource $handle, int $operation, int &$would_block = null): bool
Exemplu
Blocarea fișierului pentru acces exclusiv (scriere):
<?php
$file = fopen("data.txt", "c+");
if (flock($file, LOCK_EX)) {
ftruncate($file, 0);
fwrite($file, "Date noi");
flock($file, LOCK_UN);
}
fclose($file);
?>
Exemplu
Blocare partajată pentru citire:
<?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;
?>
Exemplu
Încercare non-blocantă de a obține blocarea:
<?php
$file = fopen("data.txt", "c+");
if (flock($file, LOCK_EX | LOCK_NB, $would_block)) {
if ($would_block) {
echo "Fișierul este blocat de alt proces";
} else {
fwrite($file, "Date");
flock($file, LOCK_UN);
}
}
fclose($file);
?>
Vezi și
-
funcția
fopen,
care deschide un fișier -
funcția
fclose,
care închide un fișier -
funcția
is_writable,
care verifică posibilitatea de scriere