2011-11-07 11 views
8

Tengo un problema con la E/S del archivo PHP.El tamaño del archivo PHP no se modifica después de anexar

$file = fopen("/tmp/test.txt", "w"); 
fwrite($file,"hi there\n"); 
fclose($file); 
echo filesize("/tmp/test.txt")."\n"; # displays 9 

$file = fopen("/tmp/test.txt", "a"); 
fwrite($file,"hi there\n"); 
fclose($file); 
echo filesize("/tmp/test.txt")."\n"; # also displays 9 !!!!!!! 

Como se puede ver, estoy cambiando el tamaño del archivo después de la escritura inicial añadiéndole. ¿Por qué obtengo 9 como tamaño de archivo en ambos casos? Estoy esperando la salida 18 como en el caso 2.

+0

¿Cuál es el contenido del archivo después de la ejecución de este script? – hsz

+0

Estimado hsz, tiene contenidos esperados. Tiene 18 caracteres. – user1033837

Respuesta

15

Es necesario borrar la memoria caché estado del archivo llamando a la función clearstatcacheantes se llama a la filesize() de nuevo después de la modificación del archivo:

// write into file. 
// call filesize() 

clearstatcache(); 

// append to the fiile. 
// call filesize() 

Con el fin para obtener un mejor rendimiento PHP almacena en caché el resultado de filesize(), por lo que necesita decirle a PHP que borre ese caché antes de llamar al filesize() nuevamente en un archivo modificado.

+0

¡increíble! Funciona de maravilla. – user1033837

Cuestiones relacionadas