Hàm flock() trong PHP

Định nghĩa và cách sử dụng

Hàm flock() khóa hoặc giải phóng tệp.

Nếu thành công, thì trả về true. Nếu thất bại, thì trả về false.

Ngữ pháp

flock(file,khóa,block)
Tham số Mô tả
file Bắt buộc. Định nghĩa tệp mở cần khóa hoặc giải phóng.
khóa Bắt buộc. Định nghĩa loại khóa cần sử dụng.
block Chọn. Nếu đặt là 1 hoặc true, thì khi khóa sẽ chặn các tiến trình khác.

Giải thích

hoạt động của flock() file phải là một con trỏ tệp đã mở.

khóa tham số có thể là một trong các giá trị sau:

  • Để lấy khóa chia sẻ (chương trình đọc), hãy đặt khóa làm LOCK_SH (trong các phiên bản trước 4.0.1 của PHP được thiết lập là 1).
  • Để lấy khóa độc quyền (chương trình ghi), hãy đặt khóa làm LOCK_EX (trong các phiên bản trước 4.0.1 của PHP được thiết lập là 2).
  • Để giải phóng khóa (cả khóa chia sẻ và khóa độc quyền), hãy đặt khóa làm LOCK_UN (trong các phiên bản trước 4.0.1 của PHP được thiết lập là 3).
  • Nếu không muốn flock() bị chặn khi khóa, hãy đặt khóa thêm LOCK_NB (trong các phiên bản trước 4.0.1 của PHP được thiết lập là 4).

Lưu ý và ghi chú

Lưu ý:Có thể thông qua fclose() Để giải phóng thao tác khóa, mã thực thi xong cũng sẽ tự động gọi.

Ghi chú:Do flock() cần một con trỏ tệp, vì vậy có thể phải sử dụng một tệp khóa đặc biệt để bảo vệ quyền truy cập vào tệp định mở bằng chế độ ghi (thêm "w" hoặc "w+" vào hàm fopen()).

Mô hình

<?php
$file = fopen("test.txt","w+");
// exclusive locking
if (flock($file,LOCK_EX))
  {
  fwrite($file,"Write something");
  // release lock
  flock($file,LOCK_UN);
  }
else
  {
  echo "Error locking file!";
  }
fclose($file);
?>