php再提文件锁定。
来源:互联网 发布:天猫和淘宝有什么关系 编辑:程序博客网 时间:2024/04/30 00:47
独立服务器出租400/月,有网通,电信,双线 | 黑客培训活动 | 十年专业防黑客团队 | 20G防ddos | 独家推出免杀空间 | 合租空间240元/1G 010-87003500
首页 本类
再提文件锁定。
一个文本的发贴统计程序,count.txt文件纪录总发贴数量,流程为:
读取count.txt并递加1 --------> 回写
(锁定后读取) (解除锁定) (锁定后写入)
假设现在有两个进程对其进行操作:
ID 1 ID 2
锁定文件读取并递加
(解除锁定)
锁定文件读取并递加
(解除锁定)
回写
(解除锁定)
回写
(解除锁定)
这样这两个进程就出现了冲突,"ID 2"已经取代"ID 1"的操作,因为"ID 2"的读取数据恰好在"ID 1"的解除锁定和回写之间进行。这样就出现了数据丢失的问题。
以前并不在意这种问题,认为可能性非常小即使出错也无所谓,但刚才我测试过自己的程序,在访问量足够大的情况下就会出现这种问题(每秒3-4次操作)。
我认为唯一解决办法就是读取和回写过程在同一步完成,即读取后不解除锁定直接回写,曾尝试使用 fopen($this->NLX_FilePath, 'rw') 的方法,但不奏效。
希望各位就此问题进行讨论,研究解决办法!
用 一个没有这个痛的方法,操作数据库,所有的操作就没有这么麻烦了
Drate(同舟) 这可不是办法啊,做程序员怎么能逃避问题呢?呵呵
想到办法了。
再建立一个文件locktest.txt
程序流程这么写:
// +----------------------------------+
$lock_fp = fopen('locktest.txt', 'r');
flock($lock_fp, 2);
count.txt递加...
fclose($lock_fp);
// +----------------------------------+
这样就轻易的解决了锁定文件的空当。
新版本的php中flock函数已经不一样了
flock()
1 == LOCK_SH : 共享鎖定,即讀鎖定
2 == LOCK_EX: 完全鎖定,即寫鎖定
3 == LOCK_UN: 釋放鎖定
4 == LOCK_NB: 無阻礙鎖定
example:
flock($fp,LOCK_EX)
一个文本的发贴统计程序,count.txt文件纪录总发贴数量,流程为:
读取count.txt并递加1 --------> 回写
(锁定后读取) (解除锁定) (锁定后写入)
假设现在有两个进程对其进行操作:
ID 1 ID 2
锁定文件读取并递加
(解除锁定)
锁定文件读取并递加
(解除锁定)
回写
(解除锁定)
回写
(解除锁定)
这样这两个进程就出现了冲突,"ID 2"已经取代"ID 1"的操作,因为"ID 2"的读取数据恰好在"ID 1"的解除锁定和回写之间进行。这样就出现了数据丢失的问题。
以前并不在意这种问题,认为可能性非常小即使出错也无所谓,但刚才我测试过自己的程序,在访问量足够大的情况下就会出现这种问题(每秒3-4次操作)。
我认为唯一解决办法就是读取和回写过程在同一步完成,即读取后不解除锁定直接回写,曾尝试使用 fopen($this->NLX_FilePath, 'rw') 的方法,但不奏效。
希望各位就此问题进行讨论,研究解决办法!
用 一个没有这个痛的方法,操作数据库,所有的操作就没有这么麻烦了
Drate(同舟) 这可不是办法啊,做程序员怎么能逃避问题呢?呵呵
想到办法了。
再建立一个文件locktest.txt
程序流程这么写:
// +----------------------------------+
$lock_fp = fopen('locktest.txt', 'r');
flock($lock_fp, 2);
count.txt递加...
fclose($lock_fp);
// +----------------------------------+
这样就轻易的解决了锁定文件的空当。
新版本的php中flock函数已经不一样了
flock()
1 == LOCK_SH : 共享鎖定,即讀鎖定
2 == LOCK_EX: 完全鎖定,即寫鎖定
3 == LOCK_UN: 釋放鎖定
4 == LOCK_NB: 無阻礙鎖定
example:
flock($fp,LOCK_EX)
- php再提文件锁定。
- php 锁定文件
- php锁定文件
- PHP 文件的锁定机制
- PHP文件的锁定机制
- PHP文件锁定写入实例教程
- php 文件锁定详解flock
- php flock之文件锁定
- PHP文件的锁定机制
- PHP文件的锁定机制
- php开发之文件指针,文件锁定
- 文件锁定
- PHP关于文件与目录(1) 写入文件 文件权限 三、锁定文件
- PHP锁定机制
- PHP中session锁定
- PHP MYSQL 事务处理-锁定
- 文件被锁定
- 文件锁定解锁
- 对LR中报WSA_IO_pending的解析-Zee
- JSP简单登录界面连接数据库的代码
- 在delphi中如何判断一个文件正在被其它的程序或进程所调用?
- 基于petshop4开发学习全站源码
- oracle结果集分页方法
- php再提文件锁定。
- 关于dotnet回车事件
- SQL 2005 中varchar(max) 的用法
- Repeater 创建复杂表头的表格
- 常用的107条Javascript
- MFC-RTTI
- 外企面试官最爱提的10个问题(附答案)
- Ajax大赛题目及答案[收集]
- Asp.Net(C#) 遍历数据库表名,列名