2011-11-07 34 views
8

Tôi đang gặp sự cố với tệp I/O PHP.Kích thước tệp PHP không thay đổi sau khi thêm

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

Như người ta có thể thấy, tôi đang thay đổi kích thước tập tin sau khi ghi ban đầu bằng cách thêm vào nó. Tại sao tôi nhận được 9 như kích thước tập tin trong cả hai trường hợp? Tôi đang chờ đợi 18 như đầu ra trong trường hợp 2.

+0

Nội dung của tệp là gì sau khi thực thi tập lệnh này? – hsz

+0

Kính gửi hsz nó có nội dung dự kiến. Nó có 18 ký tự. – user1033837

Trả lời

15

Bạn cần xóa cache tình trạng tập tin bằng cách gọi hàm clearstatcachetrước bạn gọi filesize() một lần nữa sau khi sửa đổi các tập tin:

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

clearstatcache(); 

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

Để để có hiệu suất tốt hơn, PHP lưu trữ kết quả của filesize(), do đó bạn cần yêu cầu PHP xóa bộ nhớ cache trước khi bạn gọi lại số filesize() trên một tệp đã sửa đổi.

+0

tuyệt vời !! Làm việc như một say mê. – user1033837

Các vấn đề liên quan