2011-09-10 13 views
6

im cercando di inserire i valori di una matrice nel file utilizzando foreach .. e se la dimensione del file diventa fino a 1 MB (1000000byte). lo script creare un nuovo file e mettere il valore all'interno ...filesize() restituisce 0?

questo è il codice di quello che ho usato:

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); 
} 

ora il problema è la funzione "filesize()" è sempre il ritorno 0 ,, ma se rimuovo il codice sopra di esso e metto echo filesize($file_name); solo nella pagina .. restituisce il giusto valore (dimensione del file), lo script crea anche solo 1 file anche se è diventato più di 1MB perché il filesize è 0 come filesize() funzione di ritorno!

ho controllato questa domanda PHP Problem : filesize() return 0 with file containing few data? ma ancora non funziona anche seguo la risposta # 1

desidero che avete capito il mio problema .. e mi dispiace per il mio inglese.

+0

tenta di chiudere e riaprire il file, quindi scriverci. Penso che sia dovuto al buffer. –

+0

dove è impostato '$ nome_file'? –

+0

@ Moein7tl ho provato, ma non ha funzionato – Programmer4me

risposta

8

funzione di dimensione del file viene memorizzato nella cache internamente
è necessario utilizzare in modo esplicito clearstatcache dopo ogni scrittura

accanto a questo, l'uso di file_put_contents non sembra essere corretta

prega di fare riferimento al manuale per ulteriori informazioni

+0

Grazie, funziona. – Programmer4me