2011-09-10 17 views
6

Estoy tratando de insertar valores de una matriz en el archivo utilizando foreach .. y si el tamaño del archivo llegó a ser de 1 MB (1000000 bytes). el guión crear un nuevo archivo y poner el valor en el interior ...filesize() return 0?

este es el código de lo que solía:

foreach($array as $code){ 

if(filesize($file_name) < '1000000'){ 
    $update_file = file_get_contents($file_name); 
    file_put_contents($file_name,$update_file.$code); 
}else{ 
    $open = fopen($file_name.rand('99999'),'w'); 
    file_put_contents($file_name,$code); 

    } 
echo filesize($file_name); 
} 

ahora el problema es el "tamaño del archivo()" función siempre está regresando 0 ,, pero si elimino el código de arriba y pongo echo filesize($file_name); solo en la página ... devuelve el valor correcto (tamaño del archivo), el script también hace solo 1 archivo, incluso se convirtió en más de 1MB porque el tamaño del archivo es 0 como tamaño del archivo() función de retorno!

he comprobado esta pregunta PHP Problem : filesize() return 0 with file containing few data? pero aún no funciona aun sigo la respuesta # 1

deseo de que entiende mi problema .. y lo siento por mi Inglés.

+0

intenta cerrar y volver a abrir el archivo, luego escribir en él. Creo que es debido a la memoria intermedia. –

+0

donde se establece '$ file_name'? –

+0

@ Moein7tl lo intenté, pero no funcionó – Programmer4me

Respuesta

8

función de tamaño de archivo se almacena en caché internamente
es necesario utilizar explícitamente clearstatcache después de cada escritura

lado de esto, el uso de file_put_contents no parece ser correcta

favor consulte el manual para obtener más información

+0

Gracias, funciona. – Programmer4me