ugrás a tartalomhoz

Alternatív fileok. file_exists

therest · 2012. Már. 9. (P), 12.42
Egy olyan rendszeren dolgozom most, ahol ha egy adott fájl nem található, akkor meg kell próbálja a rendszer egy másik mappában megkeresni az ugyan olyan nevű állományt.
Egyes oldalak esetében akár nagyobb mennyiségű fájlt is meg kell így vizsgálni, akár 100-200at is.

<img  src="<php echo getFilePath(id); ?>" />
A getFilePath keresi meg a pontos helyet, és adja vissza az url-t.

Jelenleg php file_exists függvényét használom, de elég sok ellentmondó véleményt hallottam már a sebességével kapcsolatban.
Ti mit gondoltok?

Azt is olvastam, hogy itt történik valamiféle cache php részről. Ez meddig él? Szabályozható?

Van e valami módszer, ami gyorsabb? Htaccess-el?
Gondolom, ha mögé lenne téve egy adatbázis akkor gyorsabb lenne, de ez sajnos kizárt.
 
1

itt történik valamiféle cache

Poetro · 2012. Már. 9. (P), 13.04
itt történik valamiféle cache php részről

Igazából a fájlrendszer részéről is történik cachelés, ez a cache-t PHP oldalon legfeljebb üríteni tudod, más szabályozást nem igazán tudsz csinálni.
Gondolom, ha mögé lenne téve egy adatbázis akkor gyorsabb lenne, de ez sajnos kizárt.

Miért kizárt? Pár perc alatt össze lehet hozni egy SQLite adatbázist, de csinálhatsz egy pusztán fájl alapút, ha csak erre a feladatra szeretnéd használni. Egyszerűen rekurzívan végigjárod a könyvtárakat, és feltérképezed, milyen fájlok vannak a könyvtárakban, és elérési utakat elmented az adatbázisba, vagy a fájlodba. Ezután vagy beolvasod az egész fájlt egy tömbbe, és ebben a tömbben keresel, vagy pedig az elérési utakból generálsz egy PHP fájlt, és azt include-olod be. Persze ebben az esetben ne feledkezz meg a megfelelő escape-elésről.
2

Ugyanerre gondoltam...

bonga · 2012. Már. 9. (P), 13.34
Ugyanerre gondoltam én is, már a régi dos-os időkben is így gyorsítottak (Lásd a Norton Commander által használt treeinfo.ncd és társai fájlokat), hogy egyetlen fájlban letárolták a könyvtárszerkezetet és abban kerestek.
A frissítésre meg jobb esetben megírhatod azt a kiegészítést, hogy új fájl feltöltésekor adja hozzá/régi fájl törlésekor törölje a cache fájlodból is a bejegyzést, ha ez nem megvalósítható, akkor pedig marad a cron-ból való frissítés megfelelő időközönként...
3

Köszi srácok! Adatbázis

therest · 2012. Már. 9. (P), 14.11
Köszi srácok!

Adatbázis olyan szinten kizárt, hogy 3rd party, nem tudok hozzámatatni, sajátot nem hozhatok létre, de jó ötletet adtatok, a könyvtárak fájlba való letárolásával.
E mellett maradok akkor szerintem, és új elem feltöltésénél, meg újragenerálom az infó fájlt.
4

Újragenerálás?

bonga · 2012. Már. 9. (P), 15.24
Ha javasolhatom, akkor új elem feltöltésnél ne újragenerálj, csak fűzz hozzá. Fájl feltöltésnél úgyis elmegy egy adag idő a feltöltéssel, ha a feltöltés után még elindítasz egy fájlrendszer-bejáró újrageneráló kódot, az szerintem nem szerencsés.
5

Persze nyilván inkább

therest · 2012. Már. 9. (P), 16.48
Persze nyilván inkább hozzáfűzni, de ez a része már admin oldalon lesz, és várhatóan csak ritkán matatnak hozzá.