Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ogarnąć tysiące małych plików
Forum PHP.pl > Forum > PHP
farthing
Witam,
borykam się ostatnio z pewnym problemem. Otóż posiadam stronę o bardzo dużej odwiedzalności, do której działania niezbędne jest oczywiście cache-owanie wszystkiego co tylko jest możliwe. Wynikiem tego powstaje masa małych plików. Oczywiście wszystkie te pliki są ładnie pokatalogowane w dwupoziomowej strukturze katalogów wg sumy md5 i póki co rozwiązanie to sprawdza się całkiem nieźle, ale martwi przyszłość... smile.gif
Na chwilę obecną jest to już kilkaset tysięcy plików o wielkości ok 5k. Obawiam się tutaj głównie o filesystem. Co prawda wszystko to działa na bardzo wydajnym sprzęcie pod kontrolą fbsd, ale mimo wszystko na dłuższą metę wydaje mi się że trzeba by tu przyjąć inne rozwiązanie.
To co mi przyszło do głowy, to grupowanie tych małych plików w kilku/dziesięciu/set plikach większych. Tylko problem w tym, że nie znalazłem póki co idealnego narzędzia do takich czarów.
Można by do tego wykorzystać SQLite, ale wydaje mi się to za bardzo rozbudowanym narzędziem jak na tak prostą rzecz...
Ja sobie rozkminiłem takie rozwiązanko:
256 dużych indeksowanych plików.
i pare funkcji do tego:
file_save($id, $data)
//$id to suma md5
pobierze dwie pierwsze litery, by wiedziec na jakim pliku operować
zapisze plik, zmodyfikuje indeks
file_load($id) - wiadomo
file_delete($id) - wiadomo
file_getlastmod($id) - zwróci ostatnią date modyfikacji, lub 0 gdy plik nie istnieje

Jeszcze lepszym wyjściem była by możliwość ustalania czasu życia pliku przy zapisywaniu. To już by było mega idealne.

Może ktoś spotkał się z odpowiednim modułem do takich zastosowań? Byłbym bardzo wdzięczny!
A może macie inne koncepcje na rozwiązanie tego zagadnienia?
heaven
a wszystkie pliki sa potrzebne? tzn czy istnieja scashowane pliki ktore reprezentuja nieistniejace juz strony?. Czy wszystkie strony sa rownie czesto uzywane?. moglbys za kazdym pobraniem cashu zautualizowac jego date utworzenia czy aktualizacji i kasowac co jakis czas pliki ktore nie byly odczytywane juz przez tydzien/miesiac. Drugie podejscie to dobra struktora podkatalogow. podejrzewam ze masz juz cos takiego, przykladowo jak skladowane sa zdjecia na allego photos.allegro.pl/photos/oryginal/15/1517/151745/15174560/151745601_1.jpg. A cache pobierany z bazy danych? wtedy latwo usuwac przestarzałe.
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.