2011-11-07 6 views
8

Sono di fronte a un problema con I/O di file PHP.La dimensione del file PHP è invariata dopo l'aggiunta di

$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 !!!!!!! 

Come si può vedere, sto modificando la dimensione del file dopo la scrittura iniziale aggiungendovi. Perché ottengo 9 come dimensione del file in entrambi i casi? Mi aspetto 18 come l'uscita in caso 2.

+0

Qual è il contenuto del file dopo l'esecuzione di questo script? – hsz

+0

Gentile hsz ci si aspetta contenuti. Ha 18 caratteri. – user1033837

risposta

15

È necessario svuotare la cache lo stato del file chiamando la funzione clearstatcacheprima di chiamare il filesize() di nuovo dopo la modifica del file:

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

clearstatcache(); 

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

Al fine per ottenere prestazioni migliori PHP memorizza nella cache il risultato di filesize(), quindi è necessario dire a PHP di cancellare quella cache prima di chiamare di nuovo lo filesize() su un file modificato.

+0

fantastico !! Funziona come un fascino. – user1033837