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

 ID:                 53064
 Updated by:         il...@php.net
 Reported by:        mraaijmakers at gmail dot com
 Summary:            filesize return 0 after is_file
-Status:             Open
+Status:             Bogus
 Type:               Bug
 Package:            Filesystem function related
 Operating System:   Linux Ubuntu
 PHP Version:        5.2.14
 Block user comment: N
 Private report:     N

 New Comment:

Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php




Previous Comments:
------------------------------------------------------------------------
[2010-10-15 03:15:15] crrodriguez at opensuse dot org

Just for the sake of completeness, other than the already mentioned
stale stat 

cache you are doing it wrong.



fwrite does not imply fflush() and fclose() does not imply fsync() (and
PHP does 

not fsync/fdatasync the file on close or provide direct functionality to
do so 

unfortunately)

------------------------------------------------------------------------
[2010-10-14 18:12:19] cataphr...@php.net

read: negligible

------------------------------------------------------------------------
[2010-10-14 18:11:29] cataphr...@php.net

That's just stale stat cache. This will work:



<?php

$filename = dirname(__FILE__) . '/test.txt';

$fh = fopen($filename, 'w+');

$isFile = is_file($filename);

fwrite($fh, 'some data goes here!');

fclose($fh);

clearstatcache(false, $filename);

var_dump($isFile, file_get_contents($filename), filesize($filename));



I'm not closing because maybe there's a way to invalidate the cache for
that file with a negligent performance penalty.

------------------------------------------------------------------------
[2010-10-14 08:38:22] mraaijmakers at gmail dot com

Description:
------------
When using is_file() on a file which is open via fopen(), the filesize()
function returns 0, even after fclose() is called; see test script.

Test script:
---------------
$filename = dirname(__FILE__) . '/test.txt';



$fh = fopen($filename, 'w+');

$isFile = is_file($filename);



fwrite($fh, 'some data goes here!');



fclose($fh);



var_dump($isFile, file_get_contents($filename), filesize($filename));



Expected result:
----------------
boolean true



string 'some data goes here!' (length=20)



int 20



Actual result:
--------------
boolean true



string 'some data goes here!' (length=20)



int 0




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



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

Reply via email to