文件鎖處機制LOGIN

文件鎖處機制

檔案鎖定處機制

檔案鎖定機制一般在單一開啟檔案的時候根本看不到效果。這一塊的學習有一點抽象。

大家不要去思考怎麼實現的呀?

為什麼看不到效果呀?
答:因為電腦的操作太快了,基本上是毫秒的。所以這個實驗其實是看不到效果的。

這一章了解檔案鎖定的基本概念即可,熟悉檔案鎖定函數和鎖定機制。

文件鎖的用途:

若一個人在寫入一個文件,另外一個人同時也打了這個文件寫入文件。
這情況下,如果遇到一定的碰撞機率的話,不知道到底誰的操作為準。
因此,這個時候我們引入鎖定機制。
若使用者A在寫入或讀取這個檔案的時候,將檔案加上共用所。我可以讀,其他人也可以讀。
但是,我如果這與的時候。我使用獨佔鎖。這個文件歸我了,你們都別動,除非我將文件鎖進行釋放。

注意:不論加上了檔案鎖定後要注意釋放。

我們來看看這個函數:

bool flock ( resource $handle , int $operation)

功能:輕巧的諮詢文件鎖定

我們來看看鎖定類型:


QQ截图20161009111405.png


#我們接下來把demo.txt加上一個獨佔鎖,進行寫入操作。

<?php
 
$fp = fopen("demo.txt", "r+");
 
 // 进行排它型锁定
if (flock($fp, LOCK_EX)) {
 
    fwrite($fp, "文件这个时候被我独占了哟\n");
 
   // 释放锁定
    flock($fp, LOCK_UN);   
} else {
    echo "锁失败,可能有人在操作,这个时候不能将文件上锁";
}
 
fclose($fp);
 
?>

說明:

1.     上例中我為了寫入文件,把文件加上了獨佔鎖定。

2.     如果我操作完成,寫入完成後,就解除了獨佔鎖定。

3.     若是讀取檔案的時候,大家可加上相同的處理想法加上共用鎖定。

 


下一節
<?php $fp = fopen("demo.txt", "r+"); // 进行排它型锁定 if (flock($fp, LOCK_EX)) { fwrite($fp, "文件这个时候被我独占了哟\n"); // 释放锁定 flock($fp, LOCK_UN); } else { echo "锁失败,可能有人在操作,这个时候不能将文件上锁"; } fclose($fp); ?>
章節課件