Skocz do zawartości

Fopen/fwrite zapis do pierwszej linii pliku tekstowego


Ecnelis

Rekomendowane odpowiedzi

Nie da czegoś takiego zrobić optymalnie przepisując za każdym razem zawartość pliku.

Napisz własną klasę, funkcje open, read, write, close. Write zapisuje normalnie, czyli dodaje na końcu a read czyta od końca.

Np.klasa dla fread wykona:

fseek($uchwyt, filesize()-$pozycja-$dlugosc)
fread($uchwyt, $dlugosc)

W systemach plików masz zaimplementowany mechanizm read-ahead, czyli będziesz musiał przesunąć pozycję i długość najlepiej do rozmiaru buforu RA lub pełnego rozmiaru bloku.

$pozycja = filesize()-$pozycja-$dlugosc;
$offset = min($pozycja, $offset);
$pozycja -= $offset;
$dlugosc += $offset;
fseek($uchwyt, $offset);
$bufor = fread($uchwyt, $dlugosc)
return substr($bufor, $offset);

taki poglądowy kod, coś optymalnego będzie wyglądało inaczej.

Ładowanie pliku do pamięci nie ma sensu bo to tak jakbyś go ładował 2 razy. Jeśli jest pamięć to i tak znajdzie się w buforze dysku a jak go załadujesz 2 razy (jeszcze dodatkowo do zmiennej PHP) to może już tej pamięci zabraknąć. Czyli jeśli nie wiesz jak optymalnie się odwoływać do dysku to zaraz po starcie sktyptu zrób file_get_content, żeby raz przeczytało plik i wrzuciło zawartość do buforu systemu a potem fread/fwrite.

Odnośnik do komentarza
Udostępnij na innych stronach

Jak ktoś słusznie zauważył najlepszym rozwiązaniem byłby pewnie zapis do DB. Zastanów się czy aby na pewno nie wchodzi to w grę. Jeśli rzeczywiście pozostają Ci pliki tekstowe, to, przy tym co napisałeś poprzedni (dużo zapisów w krótkim czasie), zapis na początku pliku jest marnym pomysłem. Można pomyśleć też nad podzieleniem pliku na mniejsze kawałki ... ale ciężko radzić jeśli nie zna się dokładnie problemu.

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności