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

 ID:                 64510
 User updated by:    gu_ludo at yahoo dot com dot br
 Reported by:        gu_ludo at yahoo dot com dot br
 Summary:            filemtime() and 'mtime' index from stat() only works
                     for the first call
 Status:             Open
-Type:               Bug
+Type:               Feature/Change Request
 Package:            Filesystem function related
 Operating System:   WinXP SP3
 PHP Version:        5.3.23
 Block user comment: N
 Private report:     N

 New Comment:

I found out that there's the function clearstatcache() 
(http://php.net/manual/en/function.clearstatcache.php), which solves the 
problem.

Although, I think the "affected functions" listed on the documentation page 
should return by default the actual values and the caching could be optionally 
configured. So I change this bug's type to "Change request".


Previous Comments:
------------------------------------------------------------------------
[2013-03-25 13:46:10] gu_ludo at yahoo dot com dot br

Description:
------------
The functions stat() and filemtime() don't return a different value for the 
file's modification time on a second call whereas fstat() does.

Test script:
---------------
echo "Using filemtime():\n";
$filename = tempnam(sys_get_temp_dir(), 'foo');
file_put_contents($filename, "First row\n", FILE_APPEND);
var_dump(filemtime($filename));
sleep(5);
file_put_contents($filename, "Second row\n", FILE_APPEND);
var_dump(filemtime($filename));

echo "\nUsing stat():\n";
$filename = tempnam(sys_get_temp_dir(), 'foo');
file_put_contents($filename, "First row\n", FILE_APPEND);
$stat = stat($filename);
var_dump($stat['mtime']);
sleep(5);
file_put_contents($filename, "Second row\n", FILE_APPEND);
$stat = stat($filename);
var_dump($stat['mtime']);

echo "\nUsing fstat():\n";
$filename = tempnam(sys_get_temp_dir(), 'foo');
$f = fopen($filename, 'r');
file_put_contents($filename, "First row\n", FILE_APPEND);
$stat = fstat($f);
var_dump($stat['mtime']);
sleep(5);
file_put_contents($filename, "Second row\n", FILE_APPEND);
$stat = fstat($f);
var_dump($stat['mtime']);

Expected result:
----------------
Using filemtime():
int(1364217934)
int(1364217939)

Using stat():
int(1364217939)
int(1364217944)

Using fstat():
int(1364217944)
int(1364217949)

Actual result:
--------------
Using filemtime():
int(1364217934)
int(1364217934)

Using stat():
int(1364217939)
int(1364217939)

Using fstat():
int(1364217944)
int(1364217949)


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



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

Reply via email to