ID:               10989
 Comment by:       shemale-mpegs1439 at hotmail dot com
 Reported By:      trax102 at hotmail dot com
 Status:           Bogus
 Bug Type:         Filesystem function related
 Operating System: Win2K-Win98-UNIX
 PHP Version:      4.0 Latest CVS (2001-05-21)
 New Comment:

<a href=http://v-ripped-voyeuroral.da.ru>mpegs shemale</a>


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

[2001-05-21 14:49:17] [EMAIL PROTECTED]

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

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

[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] trax102 at hotmail dot com

Ok, I've found the solution: simply call clearstatcache() before
filesize().

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

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

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


-- 
Edit this bug report at http://bugs.php.net/?id=10989&edit=1

Reply via email to