久久一区二区三区精品-久久一区二区明星换脸-久久一区二区精品-久久一区不卡中文字幕-91精品国产爱久久久久久-91精品国产福利尤物免费

最新php 文件鎖大全

網(wǎng)絡整理 分享 時間: 收藏本文

最新php 文件鎖大全

在日常的學習、工作、生活中,肯定對各類范文都很熟悉吧。寫范文的時候需要注意什么呢?有哪些格式需要注意呢?這里我整理了一些優(yōu)秀的范文,希望對大家有所幫助,下面我們就來了解一下吧。

php 文件鎖篇一

下面是由百分網(wǎng)小編為大家整理的php文件鎖與進程鎖的實現(xiàn),喜歡的可以收藏一下!了解更多詳情資訊,請關(guān)注應屆畢業(yè)生考試網(wǎng)!

借用swoole的服務器/客戶端與多進程機制對鎖進行說明.

這里只針對php的鎖機制進行說明,由于sql的鎖與其作用方式和應用場景不同,將作另行說明.

1.文件鎖

flock()

fclose()

swoole_lock()

文件鎖的可能應用場景為:

1.限制并發(fā)多進程或多臺服務器需要對同一文件進行訪問和修改;

2.對參與文件i/o的進程隊列化和人為阻塞;

3.在業(yè)務邏輯中對文件內(nèi)容進行守護;

下面是文件鎖c/s通訊機制下的使用,已經(jīng)省略了具體的通訊過程,如有需要請移步swoole異步任務隊列

server(服務器通訊過程已略):

//監(jiān)聽數(shù)據(jù)發(fā)送事件

$serv->on('receive', function ($serv, $fd, $from_id, $data) {

$serv->send($fd, "serverend");

$p_file = "";

var_dump(file_get_contents($p_file));

});

client1(服務器通訊過程已略):

$s_recv = "ww";

$p_file = "";

$o_file = fopen($p_file,'w+');// flock()加鎖方式:

flock($o_file,lock_ex);// // swoole加鎖方式:

// $lock = new swoole_lock(swoole_filelock, $p_file);

// $lock->lock();

fwrite($o_file, 'ss' . $s_recv);

sleep(30);// 兩種解鎖方式

// flock($o_file, lock_un);

// $lock->unlock();

client2(服務器通訊過程已略):

$s_recv = "xx";

$p_file = "";

$o_file = fopen($p_file,'w+');// flock()加鎖方式:

flock($o_file,lock_ex);//

// swoole加鎖方式:

// $lock = new swoole_lock(swoole_filelock, $p_file);

// $lock->lock();

fwrite($o_file, 'ss' . $s_recv);// 兩種解鎖方式

// flock($o_file, lock_un);

// $lock->unlock();

結(jié)果:

client2被阻塞了30s,直到client1執(zhí)行結(jié)束才對文件進行了一次寫入;

[l0.16@4 m29.5% c30s04] $ php

需要注意的是:

1.無論是flock()還是swoole提供的swoole_lock(),都有在進程結(jié)束時自動解鎖的機制,所以在demo中即使不進行手動解鎖也能正常運行,因此這里在第一個client中執(zhí)行了sleep()暫停函數(shù)來觀察文件鎖的效果;

()的標準釋放方式為flock($file,lock_un);, 但是個人喜歡fclose(),永絕后患;

2.進程鎖

與文件鎖不同的是,進程鎖并不用于阻止對文件的i/o,而是用于防止多進程并發(fā)造成的預期之外的后果.所以需要在多進程并發(fā)時將其隊列化,即在某進程的關(guān)鍵邏輯執(zhí)行結(jié)束前阻塞其他并發(fā)進程的邏輯執(zhí)行.

實現(xiàn)思路有幾種:

1.利用flock()文件鎖,創(chuàng)建一個臨時lock文件,使用lock_nb模擬阻塞或非阻塞流,再在進程內(nèi)部使用判定條件控制邏輯執(zhí)行;

非阻塞模型demo:

$p_file = "";

$o_file = fopen($p_file, 'w+');// 如果臨時文件被鎖定,這里的flock()將返回false

if (!flock($o_file, lock_ex + lock_nb)) {

var_dump('process locked');

}else { ? ?// 非阻塞模型必須在flock()中增加lock_nb參數(shù)

// 當然,這里取消lock_nb參數(shù)就是阻塞模型了

flock($o_file, lock_ex + lock_nb);

var_dump('process locking'); ? ?// 模擬長時間的執(zhí)行操作

sleep(10);

}

2.利用swoole提供的共享內(nèi)存,緩存方法或通信方法在不同的.進程中傳遞一個全局變量,進程獲取該變量的狀態(tài)后使用判定條件控制邏輯執(zhí)行;

傳遞變量的方法很多,這里只提供一個思路,就以memcached為例;

阻塞模型demo:

// 初始化memcached$memcached = new memcache;

$memcached->connect("localhost", 11211);// 獲取用來做狀態(tài)判定的全局變量

$s_flag = $memcached->get("flag");

if (!$s_flag) {

// 這里利用了memcached的過期時間作為演示,實際上業(yè)務處理完成后銷毀該變量即可

$memcached->set("flag", "locked", 0, 10);

main();

}else {

// 阻塞模型

while ($s_flag == 'locked') {

var_dump('process locked, retrying...');

// 設置重試時間, 避免過于頻繁的操作嘗試

sleep(1); ? ? ? ?// 更新狀態(tài)變量

$s_flag = $memcached->get("flag");

}

// // 非阻塞模型

// if ($s_flag == 'locked') {

// ? ? var_dump('process locked, suspended');

// ? ? die();

// }

main();

}// 模擬業(yè)務主函數(shù)function main() {

var_dump('process running'); ?// 業(yè)務執(zhí)行結(jié)束后回收memcached

// $memcached->delete("flag");

}

這里需要注意的是:

hed的過期時間不可少于程序運行的實際時間,因此建議稍微長一點,邏輯執(zhí)行結(jié)束后進行回收;

2.在非阻塞模型中,若狀態(tài)被判定為false,應該將進程中止或block,避免業(yè)務邏輯的繼續(xù)執(zhí)行;

3.在實際應用中,設置一個重試時間很有必要,這樣可以很大程度上減少針對memcached的大量i/o并發(fā),減輕服務器壓力;

s("content_relate");

【php文件鎖與進程鎖的實現(xiàn)】相關(guān)文章:

php文件鎖與進程鎖

09-06

linux新手教程之創(chuàng)建鎖文件的方法

08-21

php中讀取大文件實現(xiàn)方法

09-05

php實現(xiàn)大文件上傳源代碼

08-29

php中讀取大文件實現(xiàn)方法詳解

09-23

php文件是什么 如何打開php文件

08-27

鑰匙鎖車內(nèi)怎么辦

11-11

php文件怎么操作

09-07

php文件緩存的性能測試

09-10

信息流廣告 競價托管 招生通 周易 易經(jīng) 代理招生 二手車 網(wǎng)絡推廣 自學教程 招生代理 旅游攻略 非物質(zhì)文化遺產(chǎn) 河北信息網(wǎng) 石家莊人才網(wǎng) 買車咨詢 河北人才網(wǎng) 精雕圖 戲曲下載 河北生活網(wǎng) 好書推薦 工作計劃 游戲攻略 心理測試 石家莊網(wǎng)絡推廣 石家莊招聘 石家莊網(wǎng)絡營銷 培訓網(wǎng) 好做題 游戲攻略 考研真題 代理招生 心理咨詢 游戲攻略 興趣愛好 網(wǎng)絡知識 品牌營銷 商標交易 游戲攻略 短視頻代運營 秦皇島人才網(wǎng) PS修圖 寶寶起名 零基礎學習電腦 電商設計 職業(yè)培訓 免費發(fā)布信息 服裝服飾 律師咨詢 搜救犬 Chat GPT中文版 語料庫 范文網(wǎng) 工作總結(jié) 二手車估價 情侶網(wǎng)名 愛采購代運營 情感文案 古詩詞 邯鄲人才網(wǎng) 鐵皮房 衡水人才網(wǎng) 石家莊點痣 微信運營 養(yǎng)花 名酒回收 石家莊代理記賬 女士發(fā)型 搜搜作文 石家莊人才網(wǎng) 銅雕 關(guān)鍵詞優(yōu)化 圍棋 chatGPT 讀后感 玄機派 企業(yè)服務 法律咨詢 chatGPT國內(nèi)版 chatGPT官網(wǎng) 勵志名言 兒童文學 河北代理記賬公司 教育培訓 游戲推薦 抖音代運營 朋友圈文案 男士發(fā)型 培訓招生 文玩 大可如意 保定人才網(wǎng) 黃金回收 承德人才網(wǎng) 石家莊人才網(wǎng) 模型機 高度酒 沐盛有禮 公司注冊 造紙術(shù) 唐山人才網(wǎng) 沐盛傳媒
主站蜘蛛池模板: 免费观看的毛片手机视频 | 国产精品亚洲二线在线播放 | 色黄啪啪18周岁以下禁止观看 | 一级毛片在线完整免费观看 | 女人张开腿男人猛桶视频 | 国产精品亚洲欧美日韩一区在线 | 欧美激情久久久久久久大片 | 国产欧美在线观看视频 | 俄罗斯黄色毛片 | 特别福利视频在线观看 | 久久99精品久久只有精品 | 一级生性活免费视频 | 日韩精品视频在线 | 亚洲国产精品久久久天堂 | 国产精品福利社 | 久久精品在 | 99精品网| 深夜爽爽福利gif在线观看 | 亚洲国产情侣一区二区三区 | 亚洲精品手机在线观看 | 久久99久久99精品免观看 | 成人a大片高清在线观看 | aaa在线观看高清免费 | 九九精品免视频国产成人 | 亚洲综合图片人成综合网 | 日韩一级片视频 | 99久久国产综合精品成人影院 | 亚洲 欧美 视频 | 国产网站免费 | 亚洲天堂免费视频 | 亚洲国产老鸭窝一区二区三区 | 中文精品99久久国产 | 欧美国产永久免费看片 | 国产三级在线看 | 美女扒开双腿让男人桶 | 国产成人精品免费 | 精品成人在线视频 | 国产精品视_精品国产免费 国产精品视频久 | 亚洲爱视频| 国产亚洲人成网站在线观看不卡 | 欧美一级高清片 |