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ă

phpflock(resource $handle, int $operation, int &$would_block = null): bool

Exemplu

Blocarea fișierului pentru acces exclusiv (scriere):

php<?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<?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<?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