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