簡單談?wù)?php 文件鎖
鎖機(jī)制之所以存在是因?yàn)椴l(fā)導(dǎo)致的資源競爭,為了確保操作的有效性和完整性,可以通過鎖機(jī)制將并發(fā)狀態(tài)轉(zhuǎn)換成串行狀態(tài)。作為鎖機(jī)制中的一種,PHP的文件鎖也是為了應(yīng)對資源競爭。假設(shè)一個應(yīng)用場景,在存在較大并發(fā)的情況下,通過fwrite向文件尾部多次有序的寫入數(shù)據(jù),不加鎖的情況下會發(fā)生什么?多次有序的寫入操作相當(dāng)于一個事務(wù),我們此時需要保證這個事務(wù)的完整性。
如果我們有兩個程序同時向某個文件中寫入數(shù)據(jù),為了保證數(shù)據(jù)的完整性,可以加一個文件鎖,先讓程序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);
- PHP 文件鎖與進(jìn)程鎖的使用示例
- PHP實(shí)現(xiàn)對文件鎖進(jìn)行加鎖、解鎖操作的方法
- PHP程序中的文件鎖、互斥鎖、讀寫鎖使用技巧解析
- PHP文件鎖函數(shù)flock()詳細(xì)介紹
- PHP文件鎖定寫入實(shí)例解析
- PHP flock 文件鎖詳細(xì)介紹
- PHP使用flock實(shí)現(xiàn)文件加鎖的方法
- PHP session文件獨(dú)占鎖引起阻塞問題解決方法
- PHP對文件進(jìn)行加鎖、解鎖實(shí)例
- PHP多進(jìn)程編程實(shí)例
- 深入探究PHP的多進(jìn)程編程方法
- PHP基于文件鎖解決多進(jìn)程同時讀寫一個文件問題示例
相關(guān)文章
PHP+redis實(shí)現(xiàn)的購物車單例類示例
這篇文章主要介紹了PHP+redis實(shí)現(xiàn)的購物車單例類,涉及php連接、操作redis數(shù)據(jù)庫及購物車功能相關(guān)定義與使用技巧,需要的朋友可以參考下2019-02-02
php對大文件進(jìn)行讀取操作的實(shí)現(xiàn)代碼
在php中,對于文件的讀取時,最快捷的方式莫過于使用一些諸如file、file_get_contents之類的函數(shù),簡簡單單的幾行代碼就能很漂亮的完成我們所需要的功能。但當(dāng)所操作的文件是一個比較大的文件時,這些函數(shù)可能就顯的力不從心, 下面將從一個需求入手來說明對于讀取大文件時,常用的操作方法2013-01-01
Thinkphp結(jié)合AJAX長輪詢實(shí)現(xiàn)PC與APP推送詳解
這篇文章主要給大家介紹了關(guān)于Thinkphp結(jié)合AJAX長輪詢實(shí)現(xiàn)PC與APP推送的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。2017-07-07
php XPath對XML文件查找及修改實(shí)現(xiàn)代碼
php XPath對XML文件查找及修改實(shí)現(xiàn)代碼,需要的朋友可以參考下。2011-07-07
mac系統(tǒng)下為 php 添加 pcntl 擴(kuò)展
pcntl中php實(shí)現(xiàn)多進(jìn)程必須要安裝的擴(kuò)展,本文給大家簡單介紹下如何在mac系統(tǒng)中為 php 添加 pcntl 擴(kuò)展2016-08-08

