2011-09-10 13 views
6

Próbuję wstawić wartości tablicy do pliku przy użyciu foreach .. i jeśli rozmiar pliku wzrosła do 1 MB (1000000 bajtów). skrypt utworzyć nowy plik i umieścić wartości wewnątrz ...filesize() return 0?

jest to kod, co użyłem:

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

teraz problem jest funkcja „rozmiar pliku()” zawsze zwraca 0 ,, ale jeśli usunę kod powyżej i wstawię echo filesize($file_name); tylko na stronie .. zwróci on właściwą wartość (rozmiar pliku), skrypt sprawi, że tylko 1 plik będzie miał nawet więcej niż 1MB, ponieważ rozmiar pliku wynosi 0 jako filesize() funkcja return!

Sprawdziłem to pytanie PHP Problem : filesize() return 0 with file containing few data? ale nadal nie działa nawet śledzę Odpowiedź # 1

życzę, aby zrozumieć mój problem .. i im przepraszam za mój angielski.

+0

spróbuj zamknąć i ponownie otworzyć plik, a następnie napisz w nim. Myślę, że to z powodu bufora. –

+0

gdzie jest ustawione '$ nazwa_pliku'? –

+0

@ Moein7tl próbowałem, ale nie działał – Programmer4me

Odpowiedz

8

funkcja rozmiar pliku jest buforowane wewnętrznie
trzeba jawnie użyć clearstatcache po każdym napisać

Poza tym, użycie file_put_contents nie wydaje się być poprawne

należy zapoznać się z instrukcją obsługi, aby uzyskać więcej informacji

+0

Dzięki, to działa. – Programmer4me