flock ― 輕便的咨詢文件鎖定

說明 bool flock ( int $handle , int $operation [, int &$wouldblock ] ) PHP 支持以咨詢方式(也就是說所有訪問程序必須使用同一方式鎖定, 否則它不會工作)鎖 " /> 亚洲精品伊人久久久久,理论片午午伦夜理片I,国产亚洲欧美在线中文BT天堂网

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

PHP flock 文件鎖詳細(xì)介紹

flock
(php 4, php 5)

flock ― 輕便的咨詢文件鎖定

說明
bool flock ( int $handle , int $operation [, int &$wouldblock ] )
php 支持以咨詢方式(也就是說所有訪問程序必須使用同一方式鎖定, 否則它不會工作)鎖定全部文件的一種輕便方法。

Note:

在 Windows 下 flock() 將會強(qiáng)制執(zhí)行。

flock() 操作的 handle 必須是一個已經(jīng)打開的文件指針。operation 可以是以下值之一:


要取得共享鎖定(讀取的程序),將 operation 設(shè)為 LOCK_SH(php 4.0.1 以前的版本設(shè)置為 1)。
要取得獨(dú)占鎖定(寫入的程序),將 operation 設(shè)為 LOCK_EX(php 4.0.1 以前的版本中設(shè)置為 2)。
要釋放鎖定(無論共享或獨(dú)占),將 operation 設(shè)為 LOCK_UN(php 4.0.1 以前的版本中設(shè)置為 3)。
如果不希望 flock() 在鎖定時堵塞,則給 operation 加上 LOCK_NB(php 4.0.1 以前的版本中設(shè)置為 4)。

flock() 允許執(zhí)行一個簡單的可以在任何平臺中使用的讀取/寫入模型(包括大部分的 Unix 派生版和甚至是 Windows)。如果鎖定會堵塞的話(EWOULDBLOCK 錯誤碼情況下),可選的第三個參數(shù)會被設(shè)置為 TRUE。鎖定操作也可以被 fclose() 釋放(代碼執(zhí)行完畢時也會自動調(diào)用)。

成功時返回 TRUE, 或者在失敗時返回 FALSE.


Example #1 flock() 例子
復(fù)制代碼 代碼如下:
<?php
$fp = fopen("/tmp/lock.txt", "w+");
if (flock($fp, LOCK_EX)) { // 進(jìn)行排它型鎖定
fwrite($fp, "Write something here ");
flock($fp, LOCK_UN); // 釋放鎖定
} else {
echo "Couldn't lock the file !";
}
fclose($fp);
?>

Note:

由于 flock() 需要一個文件指針, 因此可能不得不用一個特殊的鎖定文件來保護(hù)打算通過寫模式打開的文件的訪問(在 fopen() 函數(shù)中加入 "w" 或 "w+")。

Warning
flock() 不能用于 NFS 以及其它一些網(wǎng)絡(luò)文件系統(tǒng)。詳細(xì)資料查看自己操作系統(tǒng)的文檔。
在部分操作系統(tǒng)中 flock() 以進(jìn)程級實(shí)現(xiàn)。當(dāng)用一個多線程服務(wù)器 API(比如 ISAPI)時,可能不可以依靠 flock() 來保護(hù)文件,因?yàn)檫\(yùn)行于同一服務(wù)器實(shí)例中其它并行線程的 php 腳本可以對該文件進(jìn)行處理。
flock() 不支持舊的文件系統(tǒng),如 FAT 以及它的派生系統(tǒng)。因此,此環(huán)境下總是返回 FALSE(尤其是對 Windows 98 用戶來說)。

php中文件鎖函數(shù)flock函數(shù)用法簡介:

語法:

bool flock ( int $handle , int $operation [, int &$wouldblock ] )
flock() 操作的 handle 必須是一個已經(jīng)打開的文件指針。operation 可以是以下值之一:
1. 要取得共享鎖定(讀取程序),將 operation 設(shè)為 LOCK_SH(php 4.0.1 以前的版本設(shè)置為 1)
2. 要取得獨(dú)占鎖定(寫入程序),將 operation 設(shè)為 LOCK_EX(php 4.0.1 以前的版本中設(shè)置為 2)
3. 要釋放鎖定(無論共享或獨(dú)占),將 operation 設(shè)為 LOCK_UN(php 4.0.1 以前的版本中設(shè)置為 3)
4. 如果你不希望 flock() 在鎖定時堵塞,則給 operation 加上 LOCK_NB(php 4.0.1 以前的版本中設(shè)置為 4)

看下面代碼:

a.php
復(fù)制代碼 代碼如下:
<?php
$file = “temp.txt”;
$fp = fopen($file , 'w‘);
if(flock($fp , LOCK_EX)){
fwrite($fp , “abc”);
sleep(10);
fwrite($fp , “123”);
flock($fp , LOCK_UN);
}
fclose($fp);
?>

b.php
復(fù)制代碼 代碼如下:
<?php
$file = “temp.txt”;
$fp = fopen($file , 'r');
echo fread($fp , 100);
fclose($fp);
?>

運(yùn)行 a.php 后,馬上運(yùn)行 b.php ,可以看到輸出:
abc
等 a.php 運(yùn)行完后運(yùn)行 b.php ,可以看到輸出:
abc
123
顯然,當(dāng) a.php 寫文件時數(shù)據(jù)太大,導(dǎo)致時間比較長時,這時 b.php 讀取數(shù)據(jù)不完整,在對b.php做修改
修改 b.php 為:
復(fù)制代碼 代碼如下:
<?php
$file = “temp.txt”;
$fp = fopen($file , 'r‘);
if(flock($fp , LOCK_EX)){
echo fread($fp , 100);
flock($fp , LOCK_UN);
} else{
echo “Lock file failed…”;
}
fclose($fp);
?>

運(yùn)行 a.php 后,馬上運(yùn)行 b.php ,可以發(fā)現(xiàn) b.php 會等到 a.php 運(yùn)行完成后(即 10 秒后)才顯示:
abc
123
讀取數(shù)據(jù)完整,但時間過長,他要等待寫鎖釋放,再對b.php做修改。
修改 b.php 為:
復(fù)制代碼 代碼如下:
<?php
$file = “temp.txt”;
$fp = fopen($file , 'r');
if(flock($fp , LOCK_SH | LOCK_NB)){
echo fread($fp , 100);
flock($fp , LOCK_UN);
} else{
echo “Lock file failed…”;
}
fclose($fp);
?>

運(yùn)行 a.php 后,馬上運(yùn)行 b.php ,可以看到輸出:
Lock file failed…
證明可以返回鎖文件失敗狀態(tài),而不是向上面一樣要等很久。
腳本之家小編結(jié)論:
建議作文件緩存時,選好相關(guān)的鎖,不然可能導(dǎo)致讀取數(shù)據(jù)不完整,或重復(fù)寫入數(shù)據(jù)。
file_get_contents 好像選擇不了鎖,不知道他默認(rèn)用的什么鎖,反正和不鎖得到的輸出一樣,是不完整的數(shù)據(jù)。

php技術(shù)PHP flock 文件鎖詳細(xì)介紹,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 美女逼逼毛茸茸 | 久久国产成人午夜AV影院无码 | 无人区免费一二三四乱码 | 成年人视频在线免费看 | 最美女人体内射精一区二区 | 拔萝卜视频免费看高清 | 99在线精品国自产拍不卡 | 亚洲AV色香蕉一区二区三区 | 午夜国产大片免费观看 | 伊人精品久久久大香线蕉99 | 乱辈通奷XXXXXHD猛交 | 大桥未久与黑人中出视频 | 抽插嫩B乳无码漫 | 宫交拔不出来了h黑人 | 99热这里只有精品视频2 | 97色伦图片7778久久 | 色琪琪久久热在线 | 中国成人在线视频 | 亚洲天堂2017无码 | 国产久青青青青在线观看 | 国产曰批试看免费视频播放免费 | 在线欧美免费人成视频 | chinese极品嫩模videos | 97午夜伦伦电影理论片 | 国产看黄网站又黄又爽又色 | 欧美激情视频在线观看一区二区三区 | 美国色吧影院 | 棉签和冰块怎么弄出牛奶视频 | 成 人 免费 黄 色 网站无毒下载 | 国产无遮挡无码视频在线观看不卡 | 国模沟沟一区二区三区 | 男人叼女人 | 亚洲国产成人爱AV在线播放丿 | 我们中文在线观看免费完整版 | 国产高清精品自在久久 | 鲁大师影院在线视频在线观看 | 在线播放av欧美无码碰 | 青青草原亚洲 | 国产精品久久久久a影院 | 国产性色AV内射白浆肛交后入 | 在线成人精品国产区免费 |