我是靠谱客的博主 跳跃小懒猪,最近开发中收集的这篇文章主要介绍php flock之文件锁定,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

<html>
<head>
<title>文件的锁定机制</title>
</head>
<body>
<?php
//文件的锁定机制
//flock() 对文件进行锁定
$filename="message.txt"; //声明一个变量保存文件名,在这个文件中保存留言信息
if(isset($_POST['sub'])){ //判断用户是否点击了提交按钮
//接收表单中的三条内容,并整合为一条
$message=$_POST['username']."||".$_POST['title']."||".$_POST['message']."<|>";
writeMessage($filename,$message); //用自定义的函数写入文件中
}
if(file_exists($filename)){ //判断文件存在时,则调用自定义函数来读取数据
readMessage($filename);
}
function writeMessage($filename,$message){ //自定义一个向文件中写入数据的函数
$f_handle=fopen($filename,'a'); //以追加的模式打开文件
if(flock($f_handle,LOCK_EX)){ //进行排他型锁定(独占锁定)
fwrite($f_handle,$message); //将数据写入文件
flock($f_handle,LOCK_UN); //释放文件锁定
}else{
echo "不能锁定文件"; //如果锁定失败,输出错误信息
}
}
function readMessage($filename){ //自定义一个遍历读取文件的函数
$fp=fopen($filename,"r") or die("文件读取失败"); //以只读的模式打开文件
flock($fp,LOCK_SH); //建立文件的共享锁定
$buffer=""; //将文件中的数据遍历后放入到这个字符串中
while(!feof($fp)){ //使用while循环将文件中的内容遍历出来
$buffer.=fread($fp,1024); //将文件中的内容追加到$buffer变量中
}
$data=explode("<|>",$buffer); //使用分隔符将每条留言分隔开并存入到数组中
foreach($data as $line){ //遍历数组将每行留言内容以HTML输出
$message=explode("||",$line);
if($message[0]!="" && $message[1]!="" && $message[2]!=""){
echo $message[0]."说:";
echo '&nbsp;'.$message[1];
echo $message[2]."<hr>";
}
}
flock($fp,LOCK_UN); //释放文件的锁定
fclose($fp);
}
?>
<form action="" method="post">
<label>用户名:</label><input type="text" size="30" name="username" /><br><br>
<label>标&nbsp;&nbsp;题:</label><input type="text" size="30" name="title" /><br><br>
<label>内&nbsp;&nbsp;容:</label><textarea rows="4" cols="38" name="message">请在此处填写留言内容</textarea>
<input type="submit" name="sub" value="留言" />
</form>
</body>
</html>

最后

以上就是跳跃小懒猪为你收集整理的php flock之文件锁定的全部内容,希望文章能够帮你解决php flock之文件锁定所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部