欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

簡(jiǎn)單談?wù)?php 文件鎖

 更新時(shí)間:2017年02月19日 16:54:52   作者:hlcc  
PHP出現(xiàn)文件鎖與mysql表鎖有大概想的用法,就是同一時(shí)間只能讓一個(gè)人操作,這樣就避免了同時(shí)有多個(gè)人操作同一文件,這樣導(dǎo)致數(shù)據(jù)丟失的情況了,下面我來(lái)給大家介紹PHP文件鎖用法。

鎖機(jī)制之所以存在是因?yàn)椴l(fā)導(dǎo)致的資源競(jìng)爭(zhēng),為了確保操作的有效性和完整性,可以通過(guò)鎖機(jī)制將并發(fā)狀態(tài)轉(zhuǎn)換成串行狀態(tài)。作為鎖機(jī)制中的一種,PHP的文件鎖也是為了應(yīng)對(duì)資源競(jìng)爭(zhēng)。假設(shè)一個(gè)應(yīng)用場(chǎng)景,在存在較大并發(fā)的情況下,通過(guò)fwrite向文件尾部多次有序的寫入數(shù)據(jù),不加鎖的情況下會(huì)發(fā)生什么?多次有序的寫入操作相當(dāng)于一個(gè)事務(wù),我們此時(shí)需要保證這個(gè)事務(wù)的完整性。

如果我們有兩個(gè)程序同時(shí)向某個(gè)文件中寫入數(shù)據(jù),為了保證數(shù)據(jù)的完整性,可以加一個(gè)文件鎖,先讓程序1執(zhí)行,程序1執(zhí)行完后,解鎖,再讓程序2執(zhí)行。實(shí)現(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);

相關(guān)文章

最新評(píng)論