PHP เบื้องต้น > การทำงานไฟล์ และไดเรคทอรี
การล็อกไฟล์
การล็อกไฟล์ PHP ใช้ฟังก์ชัน flock ฟังก์ชันที่ควรเรียกหลังจากไฟล์ได้รับการเปิด แต่ก่อนข้อมูลได้รับการอ่านหรือเขียนลงไฟล์
ไวยากรณ์สำหรับ flock () คือ
bool flock (int fp, int operation);
จำเป็นต้องส่งผ่านพอยเตอร์ไปยังไฟล์ที่เปิด และ หมายเลขแสดงชนิดการล็อกที่ต้องการ ส่งออก TRUE ถ้า ล็อกไฟล์ได้ และ FALSE ถ้าล็อกไม่ได้
ค่าที่ใช้ของการทำงาน แสดงในตาราง 1.3.2
ตาราง 1.3.2 ค่าการทำงาน flock ()
ค่าการทำงาน |
ความหมาย |
1 |
ล็อกการอ่าน หมายความว่าสามารถใช้ร่วมกันกับผู้อ่านอื่น |
2 |
ล็อกการเขียน นี่เป็นการกีดกันไฟล์ไม่สามารถใช้ร่วมได้ |
3 |
ปล่อยการล็อก |
+4 |
บวก 4 กับการทำงานป้องกันการขัดขวางขณะที่พยายามล็อก |
ถ้าใช้ flock () จำเป็นต้องเพิ่มให้กับสคริปต์ทั้งหมดที่ใช้ไฟล์นี้
ตัวอย่างการใช้ flock () โดยเพิ่มใน processorder.php
$fp = fopen("$DOCUMENT_ROOT/../../orders/orders.txt", "a", 1);
flock($fp, 2);
fwrite($fp, $outputstring);
flock($fp, 3);
fclose($fp);
คำสั่งนี้เข็มแข็งขึ้นแต่ยังไม่สมบรูณ์ ถ้า 2 สคริปต์พยายามล็อกในเวลาเดียวกัน จะเกิดอะไรขึ้น? ผลลัพธ์ขึ้นกับเงื่อนไขแข่งขัน จากการประมวลผลแข่งขันกับล็อกแต่ไม่แน่นอนด้านความสำเร็จที่จะเป็นสาเหตุของปัญหามากขึ้น ระบบจัดการฐานข้อมูลสามารถทำได้ดีกว่า
|