PHP 文件的锁定机制
来源:互联网 发布:网络与新媒体专业就业 编辑:程序博客网 时间:2024/05/02 13:55
<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 ' '.$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>标 题:</label><input type="text" size="30" name="title" /><br><br>
<label>内 容:</label><textarea rows="4" cols="38" name="message">请在此处填写留言内容</textarea>
<input type="submit" name="sub" value="留言" />
</form>
</body>
</html>
- PHP 文件的锁定机制
- PHP文件的锁定机制
- PHP文件的锁定机制
- PHP文件的锁定机制
- PHP锁定机制
- php 锁定文件
- php锁定文件
- InnoDB的锁定机制
- php再提文件锁定。
- PHP文件锁定写入实例教程
- php 文件锁定详解flock
- php flock之文件锁定
- MyISAM 表的锁定机制
- MySQL锁定机制的原理
- PHP的文件缓存机制
- PHP的文件缓存机制
- php开发之文件指针,文件锁定
- 删除被锁定的文件
- C#验证类 可验证:邮箱,电话,手机,数字,英文,日期,身份证,邮编,网址,IP
- 七天LLVM零基础入门(Linux版本)------第三天
- jQuery插件autocomplate的简单使用笔记
- win 7 64位 使用windows server2003 所共享的HP打印机
- Linux INITRAMFS 与 INITRD
- PHP 文件的锁定机制
- Java压缩html
- shell调用php脚本,并传递参数
- GDI+: Why is FillRectangle transparent on glass, while FillEllipse is opaque?
- Mongodb数据库(一)
- 简明 Python 教程
- 我的主页:LD日志 - www.lightdew.com
- android sdk更新导致adt错误
- 浏览器客户端与服务器的交互过程