ID: 10989
Updated by: cynic
Reported By: [EMAIL PROTECTED]
Old-Status: Analyzed
Status: Bogus
Bug Type: Filesystem function related
Operating system: 
PHP Version: 4.0 Latest CVS (2001-05-21)
Assigned To: 
Comments:

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).

Previous Comments:
---------------------------------------------------------------------------

[2001-05-21 11:55:50] [EMAIL PROTECTED]
This should not be closed yet, as I think it's a valid bug.

Derick

---------------------------------------------------------------------------

[2001-05-21 11:52:14] [EMAIL PROTECTED]
Ok, I've found the solution: simply call clearstatcache() before filesize().

---------------------------------------------------------------------------

[2001-05-21 10:57:52] [EMAIL PROTECTED]
<?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);
?>

---------------------------------------------------------------------------



ATTENTION! Do NOT reply to this email!
To reply, use the web interface found at http://bugs.php.net/?id=10989&edit=2


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to