2011-11-07 23 views
8

eklendikten sonra değiştirilmez PHP dosyası I/O ile bir sorun yaşıyorsanız ediyorum. PHP dosya boyutu,

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

biri görebileceğiniz gibi

, ben buna ekleyerek ilk yazılmasından sonra dosya boyutunu değişiyorum. Her iki durumda da 9'u neden dosya boyutu olarak alıyorum? Ben durumda çıktı olarak 18 bekliyorum 2. dosyayı değiştirdikten sonra filesize() tekrar arayın fonksiyonunu önce clearstatcache arayarak dosya durumu önbelleği temizlemek gerekir

+0

Bu komut dosyasının yürütülmesinden sonra dosyanın içeriği nedir? – hsz

+0

Sevgili hsz içerikli içeriği var. 18 karakterden oluşmaktadır. – user1033837

cevap

15

:

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

clearstatcache(); 

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

amacıyla Daha iyi bir performans elde etmek için PHP, filesize() sonucunu önbelleğe alır, böylece PHP'nin değiştirilmiş bir dosyada yeniden filesize()'u çağırmadan önce bu önbelleği temizlemesini söylemeniz gerekir.

+0

harika! ÇALIŞIYOR bir cazibe gibi. – user1033837