[PHP-DEV] Bug #10989 Updated: Wrong file writing

2001-05-21 Thread trax102

ID: 10989
User Update by: [EMAIL PROTECTED]
Old-Status: Open
Status: Closed
Bug Type: Filesystem function related
Operating system: Win2K-Win98-UNIX
PHP Version: 4.0 Latest CVS (2001-05-21)
Description: Wrong file writing

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

Previous Comments:
---

[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);
?

---


Full Bug description available at: http://bugs.php.net/?id=10989


-- 
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]




[PHP-DEV] Bug #10989 Updated: Wrong file writing

2001-05-21 Thread derick

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

This should not be closed yet, as I think it's a valid bug.

Derick

Previous Comments:
---

[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=10989edit=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]




[PHP-DEV] Bug #10989 Updated: Wrong file writing

2001-05-21 Thread cynic

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=10989edit=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]