本帖最后由 xuzuning 于 2013-03-13 12:56:42 编辑
真正的原因是文件状态缓存造成 filesize($filename) 始终为 0
function read($filename) {<br />
$fp = fopen($filename, 'rb');<br />
flock($fp, LOCK_SH);<br />
clearstatcache(); //清除文件状态缓存<br />
$data = @fread($fp, @filesize($filename));<br />
fclose($fp);<br />
return $data;<br />
}<br />
function write($filename, $data) {<br />
$fp = fopen($filename, 'ab');<br />
flock($fp, LOCK_EX);<br />
fwrite($fp, $data);<br />
fclose($fp);<br />
return $data;//mt_rand(1, 999);<br />
}<br />
<br />
$file = './wr.txt'; //原文件是空的<br />
file_put_contents($file, ''); //清空源文件<br />
echo 'r1: ', read($file), '<br><font color='#FF8000'>------解决方案--------------------</font><br><br/>';<br />
echo 'w1: ', write($file, 'a'), '<br><font color='#FF8000'>------解决方案--------------------</font><br><br/>';<br />
echo 'r2: ', read($file), '<br><font color='#FF8000'>------解决方案--------------------</font><br><br/>';<br />
echo 'w2: ', write($file, 'b'), '<br><font color='#FF8000'>------解决方案--------------------</font><br><br/>';<br />
echo 'r3: ', read($file), '<br><font color='#FF8000'>------解决方案--------------------</font><br><br/>';<br />
readfile($file); //显示一下
Copy after login