MiLupo
22.11.2003, 00:13:00
problem polega na tym jak zapisac nowa wartosc do pliku na POCZATEK a nie na koniec tak jak to sie zwykle dzieje.
wymyslilem tak:
plik_temp - plik pomocniczy
plik_wl - plik do ktorego ma byc dopisana wartosc na poczatek
1. przepisac plik_wl do plik_temp
2. otworzyc plik fopen(plik_wl, w)
3. zapisac do pliku plik_wl nowa wartosc
4. dopisac do pliku plik_wl zawartosc pliku plik_temp
tylko teraz jak to napisac w php (dopisac do pliku zawartosc innego pliku -tego nie wiem) probowalem przez copy ale to nie dopisuje tylko kasuje i zapisuje od nowa
Jesli ktos moze pomoc to prosze
menic
22.11.2003, 00:47:23
a nie lepiej wrzucic zawartosc calego pliku do tablicy, dodać nowy text funkcja [manual:597efd0b03]array_push[/manual:597efd0b03] potem odwrócic tablice [manual:597efd0b03]array_reverse [/manual:597efd0b03] i ponownie zapisac do pliku
adwol
22.11.2003, 00:58:41
Szybciej będzie:
1. fopen($plik_temp, 'w')
2. zapisać do pliku plik_temp nową wartość
3. dopisać do pliku plik_temp zawartość pliku plik_wl
4. rename($plik_temp, $plik_wl)
[php:1:d4c895d2fc]<?php
$temp = fopen($plik_temp, 'w');
flock($temp, 2);
fwrite($temp, $nowa_wartosc);
fwrite($temp, file_get_contents($plik_wl)); # to można oczywiście rozwiązać lepiej
fclose($temp);
rename($plik_temp, $plik_wl);
?>[/php:1:d4c895d2fc]
MiLupo
22.11.2003, 01:39:42
tak, wszystko dziala. dodalem taylko pare zmian.
[php:1:3a8332cad5]<?php
copy($plik_wl,$plik_temp);
$temp = fopen("$plik_temp", "w");
flock($temp, LOCK_EX);
fwrite($temp,"nowa wartosc");
fwrite($temp, file_get_contents("$plik_wl")); # to można oczywiście rozwiązać lepiej
fclose($temp);
flock($temp, LOCK_UN);
fclose($temp);
# ta czesc po to aby nie tworzyc dwoch tych samych kopi
# po zakonczeniu plik temp sie zeruje
copy($plik_temp,$plik_wl);
$temp = fopen("$plik_temp", "w");
fwrite($temp,"");
flock($temp, LOCK_UN);
fclose($temp);
?>[/php:1:3a8332cad5]
teraz wszystko dziala dzieki
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.