檔案鎖的玩法

2021-07-04 13:27:47 字數 1144 閱讀 1560

檔案鎖的玩法

1、普通兩個檔案同時往乙個檔案中寫入內容效果

index-1.php

<?php

$file = 'temp.txt';

$fp = fopen($file,'a');

for($i = 0;$i <10;$i++)

fclose($fp); 

index-2.php

<?php

$file = 'temp.txt';

$fp = fopen($file,'a'); 

for($i = 0;$i <10;$i++)

fclose($fp); 

?>

當同時執行後,(先1後2   要快馬上執行兩個)

進入temp.txt  會看到     11111111

11111111

22222222

22222222

22222222

22222222

22222222

11111111

11111111

11111111

是混亂的,那麼實際實現功能上就會出現問題!

那麼這種情況下,如何實現併發對乙個檔案寫入,而先來先寫排序寫入呢?

那麼用到檔案鎖,這是乙個很好地選擇

index-1.php改為

<?php

$file = 'temp.txt';

$fp = fopen($file,'a');

if(flock($fp,lock_ex))

flock($fp,lock_un);

}fclose($fp); 

index-2.php改為:

<?php

$file = 'temp.txt';

$fp = fopen($file,'a');

if(flock($fp,lock_ex))

flock($fp,lock_un);

}fclose($fp); 

再去執行發現temp.txt中的結果是這樣的(先1馬上2,因為1有sleep會執行一段時間,只要能保證1未完就執行了2即可)  

結果:   11111111

11111111

...   22222222

...也就是1執行完了後執行的2

檔案的讀寫鎖

如何使用linux 的檔案讀寫鎖呢 include include include include include include include include 錯誤列印 void my error const char str error,int line 設定檔案鎖 int lock set ...

Unix 檔案鎖 共享鎖 排他鎖

fcntl函式 flock結構對檔案鎖的操作 例子 協議鎖和強制鎖 檔案鎖的核心結構 unix提供了檔案鎖機制來防止多程序對同一檔案的併發操作導致的髒讀和資料混亂,同時也為多程序提供了同步機制。鎖型別共享鎖 讀鎖 共享鎖也稱為讀鎖。如果乙個程序為某個檔案的某個區域加了一把共享鎖,那麼其他程序對該檔案...

SSH的幾種玩法

得到一台linux的伺服器,我們可以進行以下幾種玩法 先講一講幾個引數 f 要求 ssh在執行命令前退至後台 它用於當 ssh準備詢問口令或密語 但是使用者希望它在後台進行 該選項隱含了 n選項 在遠端機器上啟動 n 不執行遠端命令 用於 埠.c 要求進行資料壓縮 包括 stdin,stdout,s...