[PHP] Dopisywanie na początku pliku

0

Witam .
Mam plik z danymi . Chce dodać jakieś dane do tego pliku , ale zaczynając dodawanie od jego początku , bez utraty danych , które były w pliku wcześniej . Po prostu to co było w nim wcześniej będzie "przesuwane" dalej . Jak to zrobić w php ??

0

Odczytaj zawartość pliku, do stringa, dodaj na pocz. stringa swoje dane i nadpisz te dane na stare. To mozna zrobic tylko raz otwierając plik dzieku fseek()

0

Że tak można to wiem , niestety ten sposób nie jest zbyt dobry dla dużych plików , zakładając , że pamięć RAM przypadająca na stronke w php na serwerach jest ograniczona . Możliwe , że inaczej sie nie da .
Chyba będę musiał robić to na około , ale jak będzie trzeba to wybiore sposób bez fseeka :
otwieram plik w trybie "r" , zczytuje cały do stringa , zamykam , otwieram w trybie "w" , zapisuje to co potrzebowałem na początku i dopisuje stringa .

0

Że tak można to wiem , niestety ten sposób nie jest zbyt dobry dla dużych plików , zakładając , że pamięć RAM przypadająca na stronke w php na serwerach jest ograniczona . Możliwe , że inaczej sie nie da .
Chyba będę musiał robić to na około , ale jak będzie trzeba to wybiore sposób bez fseeka :
otwieram plik w trybie "r" , zczytuje cały do stringa , zamykam , otwieram w trybie "w" , zapisuje to co potrzebowałem na początku i dopisuje stringa .

Trouble, to jest prawie ta sama metoda co moja, tyle ze Ty otwierasz plik 2x, a ja raz.

0

Trouble, to jest prawie ta sama metoda co moja, tyle ze Ty otwierasz plik 2x, a ja raz.

dchcopr - masz całkowitą racje . Ale przyznam ci szczerze , że twoja metoda jest jeszcze lepsza , gdyż lepiej otworzyć plik 1 raz , zakładając , że plik może być blokowany/ktoś inny może też z niego korzystać . Ostatecznie otworzyłem ten plik raz na "r+" , odczytałem wszystko , użyłem fajnej funkcji rewind() ;) i dopisałem string .
Ale jak mówiłem , to jest droga naokoło . Może ktoś zna lepszy sposób ...

0

Ja to robie tak:
[code]
$nazwa = "nazwa.pliku";
$wpis = "tresc danych do dodania";
$plik = fopen($nazwa, "r+");
$wpis=$wpis.fread($plik, filesize($nazwa));
rewind($plik);
fputs($plik, $wpis);
fclose($plik);
[/code]

prościej nie potrafie

0

Właśnie tak zrobiłem , ale to przejdzie tylko dla małych plików :(

1 użytkowników online, w tym zalogowanych: 0, gości: 1