ฟังก์ชัน flock() ของ PHP

การระบุและการใช้งาน

ฟังก์ชัน flock() ล็อกหรือปล่อยแฟ้ม

ถ้าประสบความสำเร็จ ก็จะคืนค่า true. ถ้าล้มเหลว ก็จะคืนค่า false.

กราฟิก

flock(file,lock,block)
ตัวแปร คำอธิบาย
file จำเป็น. กำหนดแฟ้มที่เปิดและต้องการล็อกหรือปล่อย
lock จำเป็น. กำหนดชนิดการล็อกที่ต้องการใช้
block เลือกได้. ถ้าตั้งค่าเป็น 1 หรือ true แล้ว ในขณะที่ทำการล็อกจะบรรลุความยับยั้งกระบวนการอื่นๆ

ชี้แจง

ปฏิบัติการ flock() file ต้องเป็นค่าอ้างอิงของไฟล์ที่เปิดแล้ว

lock ตัวเลือกที่เป็นไปได้ของตัวแปรนี้คือ

  • เพื่อใช้ล็อกแบบแบ่งแยก (โปรแกรมอ่าน) lock กำหนดเป็น LOCK_SH (กำหนดเป็น 1 ในฉบับ PHP 4.0.1 หลัง)
  • เพื่อใช้ล็อกแบบเดี่ยว (โปรแกรมเขียน) lock กำหนดเป็น LOCK_EX (กำหนดเป็น 2 ในฉบับ PHP 4.0.1 หลัง)
  • เพื่อปลดล็อก (ไม่ว่าจะเป็นล็อกแบบแบ่งแยกหรือล็อกแบบเดี่ยว) lock กำหนดเป็น LOCK_UN (กำหนดเป็น 3 ในฉบับ PHP 4.0.1 หลัง)
  • ถ้าไม่ต้องการให้ flock() หยุดเร็วขณะที่ล็อก lock เพิ่ม LOCK_NB (กำหนดเป็น 4 ในฉบับ PHP 4.0.1 หลัง)

คำแนะนำและหมายเหตุ

คำแนะนำ:สามารถ fclose() เพื่อปลดการล็อก โดยอัตโนมัติเมื่อการปฏิบัติการระบบสิ้นสุดลง

หมายเหตุ:เนื่องจาก flock() ต้องการค่าอ้างอิงของไฟล์ อาจจะต้องใช้ไฟล์ล็อกเฉพาะเพื่อปกป้องการเข้าถึงไฟล์ที่ต้องการเปิดในโหมดเขียน (ใส่ "w" หรือ "w+" ใน fopen())

ตัวอย่าง

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