2011-09-10 120 views
6

即時通訊嘗試插入一個數組值到文件使用foreach ..如果文件的大小變得高達1MB(1000000byte)。該腳本創建一個新的文件,並把裏面的值...filesize()返回0?

這是我用什麼代碼:

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

現在的問題是功能「文件大小()」總是返回0 ,,但如果我刪除它上面的代碼,並且只在頁面中放置echo filesize($file_name); ..它返回正確的值(文件大小),該腳本也只會生成1個文件,即使它變得超過1MB,因爲文件大小爲0,因爲文件大小()函數返回!

我檢查這個問題PHP Problem : filesize() return 0 with file containing few data? 但它甚至還沒有工作的我跟着回答#1

我希望你明白我的問題..和我的英語水平我很抱歉。

+0

嘗試關閉並重新打開文件,然後寫入它。我認爲這是因爲緩衝區。 –

+0

其中'$ file_name'已設置? –

+0

@ Moein7tl我試過,但沒有工作 – Programmer4me

回答

8

功能的文件大小是內部
你需要明確使用clearstatcache每次寫

這旁邊經過緩存,file_put_contents的使用似乎並不正確

請參考手冊獲取更多信息

+0

謝謝,它的工作原理。 – Programmer4me