|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2001-05-21 10:57 UTC] trax102 at hotmail dot com
<?php
//At the end of the script "test.txt" should
//contains "ADD1ADD2", but, as you can see,
//it will contains just "ADD2".
//Is there a work around for this problem ?
function read_file ($file_name)
{
$file = fopen($file_name, "r");
flock($file, 1);
$content = trim(fread($file, filesize($file_name)));
flock($file, 3);
fclose ($file);
return ($content);
}
function write_file ($content, $file_name)
{
$file = fopen($file_name, "w");
flock($file, 2);
fwrite($file, $content);
flock($file, 3);
fclose ($file);
}
$filename="test.txt";
write_file("", $filename);
$content = read_file($filename);
$content .= "ADD1";
write_file($content, $filename);
$content = read_file($filename);
$content .= "ADD2";
write_file($content, $filename);
?>
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Thu Oct 30 09:00:02 2025 UTC |
It's not. The clearstatcache() is really needed (per manual). The result of filesize() is cached (and it's 0), so on all the calls to read_file() 0 bytes is read, hence $filename="test.txt"; write_file("", $filename); # filesize() returns 0, and the result is cached $content = read_file($filename); # read filesize(), i. e. the cached 0 bytes. ok this time $content .= "ADD1"; write_file($content, $filename); $content = read_file($filename); # read filesize(), i. e. the cached 0 bytes. this time it's not ok # "" == $content $content .= "ADD2"; write_file($content, $filename); BTW I think it should be bogusified (user error).