PHP flock()
Hàm flock() trong PHP
Hàm flock()
trong PHP được sử dụng để thực hiện thao tác khóa file. Điều này rất hữu ích khi bạn muốn đảm bảo rằng không có quá trình nào khác có thể đọc hoặc ghi vào file trong khi một quá trình đang thực hiện thao tác trên file đó. Điều này giúp tránh tình trạng xung đột dữ liệu và đảm bảo tính toàn vẹn cho file.
Cú pháp
bool flock(resource $handle, int $operation, int &$wouldblock = null)
Tham số
- $handle: Duyệt tới file resource được mở bằng
fopen()
. - $operation: Loại khóa mà bạn muốn thực hiện. Có thể là một trong các giá trị sau:
LOCK_SH
: Khóa chia sẻ.LOCK_EX
: Khóa độc quyền.LOCK_UN
: Giải phóng khóa.
- $wouldblock: Tham số này là tùy chọn. Nếu được cung cấp, nó sẽ nhận giá trị 1 nếu thao tác khóa được mắc kẹt và không thể thực hiện ngay lập tức.
Giá trị trả về
Hàm flock()
trả về true
nếu khóa thành công, và false
nếu không thành công.
Ví dụ minh họa
$filename = "example.txt";
$file = fopen($filename, "c+"); // Mở file để đọc & ghi
if (flock($file, LOCK_EX)) { // Thực hiện khóa độc quyền
// Thực hiện các thao tác trên file
ftruncate($file, 0); // Xóa nội dung file
fwrite($file, "Nội dung mới!");
fflush($file); // Đẩy dữ liệu đến file
flock($file, LOCK_UN); // Giải phóng khóa
} else {
echo "Không thể khóa file!";
}
fclose($file); // Đóng file
Lưu ý
- Hãy đảm bảo gọi
flock()
trước khi thực hiện bất kỳ thao tác nào trên file để tránh xung đột. - Khóa sẽ tự động bị giải phóng khi file được đóng hoặc script kết thúc.
- Thao tác khóa có thể mất thời gian nếu có nhiều tiến trình cố gắng truy cập cùng một file đồng thời, vì vậy cần cẩn trọng trong các ứng dụng lớn.
Tổng kết, flock()
là một phương pháp hiệu quả để quản lý tệp trong PHP, đặc biệt trong các ứng dụng cần tính đồng bộ cao khi làm việc với file.