语料库-提供经典范文,文案句子,常用文书,您的写作得力助手

最新php 文件鎖大全

網絡整理 分享 時間: 收藏本文

最新php 文件鎖大全

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

php 文件鎖篇一

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

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

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

1.文件鎖

flock()

fclose()

swoole_lock()

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

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

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

3.在業務邏輯中對文件內容進行守護;

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

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

//監聽數據發送事件

$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();

結果:

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

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

需要注意的是:

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

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

2.進程鎖

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

實現思路有幾種:

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

非阻塞模型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參數

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

flock($o_file, lock_ex + lock_nb);

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

sleep(10);

}

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

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

阻塞模型demo:

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

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

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

if (!$s_flag) {

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

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

main();

}else {

// 阻塞模型

while ($s_flag == 'locked') {

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

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

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

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

}

// // 非阻塞模型

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

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

// ? ? die();

// }

main();

}// 模擬業務主函數function main() {

var_dump('process running'); ?// 業務執行結束后回收memcached

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

}

這里需要注意的是:

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

2.在非阻塞模型中,若狀態被判定為false,應該將進程中止或block,避免業務邏輯的繼續執行;

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

s("content_relate");

【php文件鎖與進程鎖的實現】相關文章:

php文件鎖與進程鎖

09-06

linux新手教程之創建鎖文件的方法

08-21

php中讀取大文件實現方法

09-05

php實現大文件上傳源代碼

08-29

php中讀取大文件實現方法詳解

09-23

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

08-27

鑰匙鎖車內怎么辦

11-11

php文件怎么操作

09-07

php文件緩存的性能測試

09-10

主站蜘蛛池模板: 对夹式止回阀厂家,温州对夹式止回阀制造商--永嘉县润丰阀门有限公司 | 挤奶设备过滤纸,牛奶过滤纸,挤奶机过滤袋-济南蓝贝尔工贸有限公司 | 纯化水设备-纯水设备-超纯水设备-[大鹏水处理]纯水设备一站式服务商-东莞市大鹏水处理科技有限公司 | 珠海白蚁防治_珠海灭鼠_珠海杀虫灭鼠_珠海灭蟑螂_珠海酒店消杀_珠海工厂杀虫灭鼠_立净虫控防治服务有限公司 | 工业废水处理|污水处理厂|废水治理设备工程技术公司-苏州瑞美迪 今日娱乐圈——影视剧集_八卦娱乐_明星八卦_最新娱乐八卦新闻 | 高温链条油|高温润滑脂|轴承润滑脂|机器人保养用油|干膜润滑剂-东莞卓越化学 | 自动部分收集器,进口无油隔膜真空泵,SPME固相微萃取头-上海楚定分析仪器有限公司 | 防伪溯源|防窜货|微信二维码营销|兆信_行业内领先的防伪防窜货数字化营销解决方案供应商 | 早报网| 中空玻璃生产线,玻璃加工设备,全自动封胶线,铝条折弯机,双组份打胶机,丁基胶/卧式/立式全自动涂布机,玻璃设备-山东昌盛数控设备有限公司 | 英国雷迪地下管线探测仪-雷迪RD8100管线仪-多功能数字听漏仪-北京迪瑞进创科技有限公司 | 医疗仪器模块 健康一体机 多参数监护仪 智慧医疗仪器方案定制 血氧监护 心电监护 -朗锐慧康 | 智慧钢琴-电钢琴-便携钢琴-数码钢琴-深圳市特伦斯乐器有限公司 | 超声波破碎仪-均质乳化机(供应杭州,上海,北京,广州,深圳,成都等地)-上海沪析实业有限公司 | CTAB,表面活性剂1631溴型(十六烷基三甲基溴化铵)-上海升纬化工原料有限公司 | 威客电竞(vk·game)·电子竞技赛事官网| 喷漆房_废气处理设备-湖北天地鑫环保设备有限公司 | 海外仓系统|国际货代系统|退货换标系统|WMS仓储系统|海豚云 | 小学教案模板_中学教师优秀教案_高中教学设计模板_教育巴巴 | 工业PH计|工业ph酸度计|在线PH计价格-合肥卓尔仪器仪表有限公司 济南画室培训-美术高考培训-山东艺霖艺术培训画室 | 黑龙江「京科脑康」医院-哈尔滨失眠医院_哈尔滨治疗抑郁症医院_哈尔滨精神心理医院 | 齿轮减速马达一体式_蜗轮蜗杆减速机配电机-德国BOSERL齿轮减速电动机生产厂家 | 【黄页88网】-B2B电子商务平台,b2b平台免费发布信息网 | 菲希尔FISCHER测厚仪-铁素体检测仪-上海吉馨实业发展有限公司 | 深圳善跑体育产业集团有限公司_塑胶跑道_人造草坪_运动木地板 | 茅茅虫AI论文写作助手-免费AIGC论文查重_写毕业论文降重 | 浙江筋膜枪-按摩仪厂家-制造商-肩颈按摩仪哪家好-温州市合喜电子科技有限公司 | 茶叶百科网-茶叶知识与茶文化探讨分享平台 | 合肥网络推广_合肥SEO网站优化-安徽沃龙First | 石家庄律师_石家庄刑事辩护律师_石家庄取保候审-河北万垚律师事务所 | 复合土工膜厂家|hdpe防渗土工膜|复合防渗土工布|玻璃纤维|双向塑料土工格栅-安徽路建新材料有限公司 | 深圳美安可自动化设备有限公司,喷码机,定制喷码机,二维码喷码机,深圳喷码机,纸箱喷码机,东莞喷码机 UV喷码机,日期喷码机,鸡蛋喷码机,管芯喷码机,管内壁喷码机,喷码机厂家 | 对辊破碎机-液压双辊式,强力双齿辊,四辊破碎机价格_巩义市金联机械设备生产厂家 | 砂石生产线_石料生产线设备_制砂生产线设备价格_生产厂家-河南中誉鼎力智能装备有限公司 | 意大利Frascold/富士豪压缩机_富士豪半封闭压缩机_富士豪活塞压缩机_富士豪螺杆压缩机 | 猪I型/II型胶原-五克隆合剂-细胞冻存培养基-北京博蕾德科技发展有限公司 | 山东PE给水管厂家,山东双壁波纹管,山东钢带增强波纹管,山东PE穿线管,山东PE农田灌溉管,山东MPP电力保护套管-山东德诺塑业有限公司 | 上海新光明泵业制造有限公司-电动隔膜泵,气动隔膜泵,卧式|立式离心泵厂家 | 即用型透析袋,透析袋夹子,药敏纸片,L型涂布棒-上海桥星贸易有限公司 | 辐射色度计-字符亮度测试-反射式膜厚仪-苏州瑞格谱光电科技有限公司 | 螺杆真空泵_耐腐蚀螺杆真空泵_水环真空泵_真空机组_烟台真空泵-烟台斯凯威真空 |