php 锁定文件的问题。

我在做一个基于文本的论坛,用户注册时的敏感信息都放在某txt文件里,考虑到高峰时间段用户注册人数会很多,怕造成数据库的混乱故此使用flock函数,但是自己调试却发现了难以... 我在做一个基于文本的论坛,用户注册时的敏感信息都放在某txt文件里,考虑到高峰时间段用户注册人数会很多,怕造成数据库的混乱故此使用flock函数,但是自己调试却发现了难以理解的问题,如下:

<?php
$fp = fopen ('./data.txt',"w");
$islock = flock ($fp, LOCK_EX); 锁定文件,只有本进程有权写入。
if($islock === false) //判断文件是否被锁定。
{
/*
去掉了一些处理不能锁定时的代码...
*/
echo 'NO!';
//fclose($fp);
}
else {
fwrite ($fp, "soming...\r");
//flock ($fp, LOCK_UN);
//fclose($fp);
echo 'OK!';
}
?>

按照我刻意修改后的不完整代码,应当在我第一次执行的时候正常写入文件并显示正确提示,而第二次执行的时候将显示错误提示...但是结果却总是“OKOKOKOKOK...”,哎,烦!

空间绝对支持flock函数,请问各位高手,究竟是哪里出现了问题?
展开
 我来答
百度网友62725ad
推荐于2016-11-22 · TA获得超过856个赞
知道大有可为答主
回答量:1530
采纳率:0%
帮助的人:520万
展开全部
问题在于,flock()这个函数不好使。
这是由PHP先天决定的。
用户A访问你的程序后,PHP在服务器端会启动一个线程,flock这个函数只能在当前线程中锁住这个文件。
同时,如果有另外的用户B也访问了这个程序,PHP会再启动一个线程 ,flock只对B的线程起作用.A和B之间互不影响。A此时,A线程对文件的锁定不影响 B对文件的操作!
有个
16200文本论坛,你从百度上搜一下,载下来参考一下它在数据操作上是怎么做的。挺复杂的文件操作。
阳光上的桥
2008-02-27 · 知道合伙人软件行家
阳光上的桥
知道合伙人软件行家
采纳数:21423 获赞数:65810
网盘是个好东东,可以对话和传文件

向TA提问 私信TA
展开全部
你的程序我看不很明白:锁定之后不需要解锁吗?文件打开没看见你关闭?

如果你这不是完成老师布置作业,而是完成老板布置的工程,请用我下面的方法,程序绝对简单,系统绝对安全。

如果环境不支持数据库,必须使用文本来存储,解决并发冲突最好的办法是一条记录存为一个文本文件:新注册用户就新建立文件,检查是否存在就检测相应的文件是否存在,获取注册信息就是直接打开文件,获取注册用户清单就列目录。这样一来,所有复杂的处理都交给操作系统去完成,你的程序将变得非常简单,而几乎不可能发生冲突,即使冲突也不可能出现灾难。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zengyi584920
2008-02-27 · 超过44用户采纳过TA的回答
知道答主
回答量:225
采纳率:0%
帮助的人:115万
展开全部
没有解锁
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式