Hàm flock

Hàm flock thiết lập hoặc gỡ bỏ khóa trên tệp. Tham số đầu tiên của nó nhận một con trỏ tệp, thu được qua fopen, tham số thứ hai - loại khóa (LOCK_SH, LOCK_EX hoặc LOCK_UN), và tham số thứ ba tùy chọn - cờ cho thao tác không chặn.

Cú pháp

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

Ví dụ

Khóa tệp để truy cập độc quyền (ghi):

php<?php
  $file = fopen("data.txt", "c+");
  if (flock($file, LOCK_EX)) {
    ftruncate($file, 0);
    fwrite($file, "Dữ liệu mới");
    flock($file, LOCK_UN);
  }
  fclose($file);
?>

Ví dụ

Khóa chia sẻ để đọc:

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

Ví dụ

Thử chiếm khóa không chặn:

php<?php
  $file = fopen("data.txt", "c+");
  if (flock($file, LOCK_EX | LOCK_NB, $would_block)) {
    if ($would_block) {
      echo "Tệp đang bị khóa bởi tiến trình khác";
    } else {
      fwrite($file, "Dữ liệu");
      flock($file, LOCK_UN);
    }
  }
  fclose($file);
?>

Xem thêm