2011-09-10 3 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);を置く場合..それは適切な値(ファイルのサイズ)を返す、スクリプトもファイルサイズが0であるため1MB以上になった1ファイルを作るfilesize()関数の戻り値!

私はあなたが...私の問題を理解し、私の英語のため申し訳ありませんイムことを望む回答#1

に従ってください、私はこの質問PHP Problem : filesize() return 0 with file containing few data? をチェックするが、それはまださえ機能していません。

+0

ファイルを閉じて再オープンしてから書き込みを試みてください。バッファーが原因です。 –

+0

'$ file_name'はどこに設定されていますか? –

+0

@ Moein7tl私は試しましたが動作しませんでした – Programmer4me

答えて

8

機能のファイルサイズが内部
キャッシュされますが、明示的にそれぞれの後clearstatcacheを使用する必要があり、この横に

を書き、ますfile_put_contentsの使い方は正しい

ではないようです詳細については、マニュアルを参照してください

+0

ありがとう、それは動作します。 – Programmer4me

関連する問題