ฟังก์ชัน flock

ฟังก์ชัน flock ตั้งค่าหรือปลดล็อกไฟล์ พารามิเตอร์แรกมันรับตัวชี้ไฟล์ที่ได้จาก fopen พารามิเตอร์ที่สอง - ประเภทของการล็อก (LOCK_SH, LOCK_EX หรือ LOCK_UN) และพารามิเตอร์ที่สามซึ่งเป็นตัวเลือก - แฟล็กสำหรับการดำเนินการแบบไม่บล็อก

ไวยากรณ์

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

ตัวอย่าง

การล็อกไฟล์สำหรับการเข้าถึงแบบพิเศษ (การเขียน):

php<?php
  $file = fopen("data.txt", "c+");
  if (flock($file, LOCK_EX)) {
    ftruncate($file, 0);
    fwrite($file, "ข้อมูลใหม่");
    flock($file, LOCK_UN);
  }
  fclose($file);
?>

ตัวอย่าง

การล็อกแบบใช้ร่วมกันสำหรับการอ่าน:

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

ตัวอย่าง

ความพยายามจับล็อกแบบไม่บล็อก:

php<?php
  $file = fopen("data.txt", "c+");
  if (flock($file, LOCK_EX | LOCK_NB, $would_block)) {
    if ($would_block) {
      echo "ไฟล์ถูกล็อกโดยกระบวนการอื่น";
    } else {
      fwrite($file, "ข้อมูล");
      flock($file, LOCK_UN);
    }
  }
  fclose($file);
?>

ดูเพิ่มเติม

  • ฟังก์ชัน fopen,
    ซึ่งเปิดไฟล์
  • ฟังก์ชัน fclose,
    ซึ่งปิดไฟล์
  • ฟังก์ชัน is_writable,
    ซึ่งตรวจสอบความเป็นไปได้ในการเขียน