/* * 文件的锁定机制 * flock()轻便的咨询文件锁定 * LOCK_SH取得共享锁定(读取的程序)。 * LOCK_EX 取得独占锁定(写入的程序。 * LOCK_UN 释放锁定(无论共享或独占)。 * 如果不希望 flock() 在锁定时堵塞,则是 LOCK_NB(Windows 上还不支持)。 * */ /* * 留言板 */ $filename = "message.txt"; if(isset($_POST['dosubmit'])){ //字段的分隔|| 行的分隔[n] $mess = "{$_POST['username']}||".time()."||{$_POST['title']}||{$_POST['content']}[n]"; writemessage($filename, $mess); } if(file_exists($filename)){ readmessage($filename); } //读信息 function readmessage($filename){ // $mess = file_get_contents($filename); $mess = ""; $fp = fopen($filename, "r"); flock($fp, LOCK_SH+LOCK_NB);//读锁定 while(!feof($fp)){ $mess .=fread($fp, 1024); } flock($fp, LOCK_UN+LOCK_NB);//释放锁 $mess = rtrim($mess,"[n]"); $arrmess = explode("[n]", $mess); foreach($arrmess as $m){ list($username,$daytime,$title,$content) = explode("||", $m); echo "<b>{$username}</b>,".date('Y-m-d H:i:s',$daytime).",<i>{$title}</i><br/><u>{$content}</u><br/><br/><br/>"; } fclose($fp); } //写信息 function writemessage($filename,$mess){ $fp = fopen($filename, "a"); //锁定文件 if(flock($fp, LOCK_EX+LOCK_NB)){ fwrite($fp, $mess); flock($fp,LOCK_UN+LOCK_NB);//释放文件 }else{ echo '写入锁定失败!'; } fclose($fp); } ?> <form action="index.php" method="post"> 用户名:<input type="text" name="username" value=""/><br/> 标题:<input type="text" name="title" value=""/><br/> 内容:<textarea name="content" cols="40" rows="4"></textarea><br/> <input type="submit" name="dosubmit" value="留言"/> </form>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。