ฟังก์ชัน 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); ?>