Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> PHP

Hàm flock() trong PHP


Hàm flock() thực hiện khóa (lock) hoặc mở khóa (unlock) file để đồng bộ truy cập đa tiến trình. Trả về TRUE nếu thành công, FALSE nếu thất bại.

Cú pháp

flock(file_pointer, operation, wouldblock)

Tham số

  • file_pointer – Con trỏ file mở (fopen).

  • operation – Loại khóa:

    • LOCK_SH – Shared lock (đọc, nhiều tiến trình cùng lúc).

    • LOCK_EX – Exclusive lock (ghi, độc quyền).

    • LOCK_UN – Mở khóa (shared hoặc exclusive).

  • wouldblock – Nếu set 1: flock() sẽ set biến này thành TRUE nếu lock bị block (non-blocking). Mặc định 0 (block cho đến khi được khóa).

Giá trị trả về

Trả về TRUE nếu khóa/mở khóa thành công, FALSE nếu thất bại.

Ví dụ: Shared lock khi ghi

<?php
$file_pointer = fopen("new.txt", "w+");
if (flock($file_pointer, LOCK_SH)) {
    fwrite($file_pointer, "Some content");
    flock($file_pointer, LOCK_UN);
} else {
    echo "Locking of file shows an error!";
}
fclose($file_pointer);
?>

Kết quả

TRUE

Lưu ý: flock() là advisory lock (dựa trên sự hợp tác). Không hoạt động trên NFS/fat32 một số trường hợp. Luôn LOCK_UN trước fclose().