Przy większej ilości plików w katalogu ich znalezienie zwalnia.
Rozwiązaniem jest... Numeracja plików cache Np.
wpis_[id_wpisu] gdzie następnie rozbijamy id_wpisu po 3 znaki (można zrobić matematycznie jeżeli chcesz mieć więcej niż 1000 plików w jednym katalogu.
Tak więc numer 3425 rozbijamy na 3/425, 241244 na 241/244, 5 na 0/5
Dzięki temu ścieżka do takiego pliku wpis_241254 wyglądałaby tak
cache/wpis/241/254
Moja funkcja, która realizuje rozbicie liczby na numery katalogów to
/**
* Rozbija liczbę na nazwę katalogu w cache.
* Maksymalna liczba możliwych kombinacji określona jest wzorem $maxFiles ^ $depthLevel
* @param int $num liczba do rozbicia
* @param int $depthLevel liczba zagłębień katalogów, przy 2 dla 5 wyjdzie 0/0/5
* @param int $maxFile maksymalna liczba plików w katalogu
* @return string
*/
function getNumPath($num, $depthLevel=1, $maxFiles = 1000)
{
$tmpNum=$num;
// algorytm rozbijania na czesci
for($i=$depthLevel; $i>0; $i--)
{
$w=floor($tmpNum/pow
($maxFiles, $i)); $tmpNum-=($w*pow($maxFiles, $i));
$dir[]=$w;
}
return implode('/', $dir).'/'.$tmpNum; }
BARDZO WAŻNA UWAGA! Zmiana choć jednego z dwóch ostatnich parametrów będzie wymagała wyczyszczenia cache albo przepisanie plików do odpowiednich ścieżek
Jest jeszcze jedno ale... Jeżeli newsów nie wykorzystujesz na innych stronach to lepiej zapisywać po prostu html bądź cała stronę. Analogicznie z innymi elementami.