簡單談談 php 文件鎖
鎖機制之所以存在是因為并發(fā)導致的資源競爭,為了確保操作的有效性和完整性,可以通過鎖機制將并發(fā)狀態(tài)轉換成串行狀態(tài)。作為鎖機制中的一種,PHP的文件鎖也是為了應對資源競爭。假設一個應用場景,在存在較大并發(fā)的情況下,通過fwrite向文件尾部多次有序的寫入數(shù)據(jù),不加鎖的情況下會發(fā)生什么?多次有序的寫入操作相當于一個事務,我們此時需要保證這個事務的完整性。
如果我們有兩個程序同時向某個文件中寫入數(shù)據(jù),為了保證數(shù)據(jù)的完整性,可以加一個文件鎖,先讓程序1執(zhí)行,程序1執(zhí)行完后,解鎖,再讓程序2執(zhí)行。實現(xiàn)代碼如下:
$fp = fopen('test.txt',"a");
$count = 10;
if (flock($fp, LOCK_EX)) {
for($i=1;$i<$count;$i++){
fwrite($fp, 'text2_'.$i."rn");
echo "test2".date('h:i:s') . "
";
sleep(1);
echo "test2".date('h:i:s');
}
flock($fp , LOCK_UN);
}else{
echo "Couldn't lock the file !";
}
fclose($fp);
相關文章
Thinkphp結合AJAX長輪詢實現(xiàn)PC與APP推送詳解
這篇文章主要給大家介紹了關于Thinkphp結合AJAX長輪詢實現(xiàn)PC與APP推送的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起看看吧。2017-07-07
php XPath對XML文件查找及修改實現(xiàn)代碼
php XPath對XML文件查找及修改實現(xiàn)代碼,需要的朋友可以參考下。2011-07-07

