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ść...

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?