中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP 文件鎖

發布時間:2020-07-14 11:28:11 來源:網絡 閱讀:1497 作者:努力的C 欄目:web開發

之前面試拼多多的時候記得提到過文件鎖這樣的一個概念。當時并不知道是什么。今天工作了,遇到過數據庫鎖,MC鎖,今天又偶爾發現了PHP自帶的文件鎖。flock

http://php.net/manual/zh/function.flock.php

bool flock ( resource $handle , int $operation [, int &$wouldblock ] )

flock() 允許執行一個簡單的可以在任何平臺中使用的讀取/寫入模型(包括大部分的 Unix 派生版和甚至是 Windows)。

在 PHP 5.3.2版本之前,鎖也會被 fclose() 釋放(在腳本結束后會自動調用)。

PHP 支持以咨詢方式(也就是說所有訪問程序必須使用同一方式鎖定, 否則它不會工作)鎖定全部文件的一種輕便方法。 默認情況下,這個函數會阻塞到獲取鎖;這可以通過下面文檔中 LOCK_NB 選項來控制(在非 Windows 平臺上)。

handle
文件系統指針,是典型地由 fopen() 創建的 resource(資源)。

operation
operation 可以是以下值之一:

LOCK_SH取得共享鎖定(讀取的程序)。
LOCK_EX 取得獨占鎖定(寫入的程序。
LOCK_UN 釋放鎖定(無論共享或獨占)。
如果不希望 flock() 在鎖定時堵塞,則是 LOCK_NB(Windows 上還不支持)。

wouldblock
如果鎖定會堵塞的話(EWOULDBLOCK 錯誤碼情況下),可選的第三個參數會被設置為 TRUE。(Windows 上不支持)

返回值 ?

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

<?php
$fp = fopen('./a.lock','r');
if(flock($fp,LOCK_EX)){
echo date("Y-m-d H:i:s",time());
sleep(10);
flock($fp,LOCK_UN);
}else {
echo "LOCKing.........";
}
fclose($fp);

這是獨占鎖,誰搶到了,別就只能阻塞等待結束了。

<?php
$fp = fopen('./a.lock','r');
if(flock($fp,LOCK_EX | LOCK_NB)){
echo date("Y-m-d H:i:s",time());
sleep(10);
flock($fp,LOCK_UN);
}else {
echo "LOCKing.........";
}
fclose($fp);

如果不想阻塞等待,可以用LOCK_NB 直接返回else中的內容

<?php
$fp = fopen('./a.lock','r');
if(flock($fp,LOCK_SH)){
echo date("Y-m-d H:i:s",time());
sleep(10);
flock($fp,LOCK_UN);
}else {
echo "LOCKing.........";
}
fclose($fp);

這里是共享鎖,可以一起讀寫。。。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

贺兰县| 新建县| 峨眉山市| 大姚县| 星子县| 文安县| 鲁甸县| 龙岩市| 安顺市| 康乐县| 田东县| 保德县| 明溪县| 桐柏县| 修武县| 翁源县| 灵山县| 丰顺县| 定边县| 井研县| 乃东县| 大英县| 来安县| 大石桥市| 桦川县| 西乌珠穆沁旗| 镇平县| 铁力市| 荣成市| 本溪| 隆德县| 衡水市| 峨山| 铁岭县| 建德市| 辽阳县| 海口市| 探索| 武功县| 内黄县| 阜平县|