Stejný kód v různých adresářích
Školení, která pořádám
Časopis Clavis, jehož Internetovou podobu už devět let připravuji, má texty a obrázky jednotlivých čísel uložené v adresářích. Samozřejmě je žádoucí, aby se při pohledu na samotný adresář zobrazil nějaký relevantní obsah – třeba celé číslo. Kód pro zpracování dat je u všech čísel stejný a bylo by pochopitelně nesmyslné ho mít nakopírovaný do všech adresářů. Soubor index.php
v každém adresáři tedy obsahuje jediný řádek:
<?php
include "../data.php";
?>
Soubor data.php
pak udělá vše, co je třeba, s tím, že aktuálním pracovním adresářem zůstal adresář se soubory daného čísla:
<?php
glob("*.gif"); // vrátí všechny soubory s koncovkou .gif v aktuálním čísle
basename(dirname($_SERVER["PHP_SELF"])); // pokud bychom náhodou potřebovali znát adresář aktuálního čísla
?>
Obrat je to samozřejmě triviální – chtěl jsem jen ukázat, že ne na všechno je potřeba brát hned mod_rewrite.
Diskuse
Michal Hantl:
Neco podobného jsem použil u svého CMS - je ve v jedné složce, z té složky si stačí naincludovat jeden soubor a předat login informace. Takže i uploadnuté soubory k danému webu jsou ve složce daného webu a CMS složka nenese žádné soubory navíc.
Druhou výhodou je, že když dělám nějaký web, nekopíruju svůj CMS jak pako, takže když něco upravím, nemusím to nikam kopírovat a na disku se mi nevyskytují odlišné verze.
Leo:
Priznam se, ze tentokrat jsem to vubec nepochopil..., ale mozna je to tim, ze se jeste dolecuju z chripky jak remen. Leo
Jakub Podhorský:
jestli jsem to já správně pochopil tak prostě mu ty jednotlivé adresáře co zadáváme v URL existují i fyzicky na disku jen v každém adresáři je soubor index.php který má obsah jak je zde napsaný a tudíž nepotřebuje mod_rewrite jen v podstatě vytváří nové kopie index.php v nových adresářích
imho zajímavý řešení ale mod_rewrite se mi zdá lepší
snad jsem ten článek správně pochopil :)
jj asi budu taky zastance MR (pokud ho na serveru mame), ale to je pochopitelne :))
mr je na to jak delany, nemusime aspon porad vsude kopirovat index.php :), ale jasne i to je reseni.
Jakub Podhorský:
no hlavně by se pak dalo narazit kdyby tam bylo těch souborů až moc a měli jsme omezený diskový prostor...pak se to dá rychle zaplnit i když je mi jasné že to by se mluvilo řádově o milionech souborů index.php ale i to se může přihodit...navíc když k tomu ještě připočítám ukládání obrázků a dalších souborů na ten disk tak ta kapacita de potom rychle pryč což je obrovská nevýhoda :(
Quick:
Rekl bych, ze s prostorem na disku problem nebude. Soubor index.php bude urcite nekolinasobne mensi nez jeden obrazek. Kdyz uz nebude misto, asi tezko to jde rezit MR a smazanim 'prebytecnych' index.php
Jakub Podhorský:
dobře možná špatnej příklad ale můžu si vzít situaci kdy něco bude nutný prostě dát jenom do toho souboru index.php pak jich tam máš dejme tomu stovky(složitá editace) a nebo potřebuješ něco dát jenom do jednoho z nich(zdlouhavý vyhledávání)
určitě je to dobrý východisko když už člověk nemá mod_rewrite k dispozici ale osobně bych to spíš asi rešil přes chybovou stránku 404 i když ta na to není určená :-/ ale zdá se mi to jako lepší řešení
jinak teď mě tak napadá co když máš na hostingu dejme tomu jen 10MB diskovýho prostoru tvůj systém zabere dejme tomu cca 2 MB(když to přeženu) + obrázky(přeženu že nejsou optimalizovaný a zbytečně velký a máš další 2 MB) to už máš 4 MB...no pak když chceš mít ukládání obrázků pro svůj redakční systém to už máš jenom 6MB volnýho a upřímě to se obrázkama dá zaplnit do měsíce a co potom?
a databázi máš např. na 30MB...je to sice dost nereálná situace ale může nastat
navíc další věc zálohování souborů....ono třeba takhle zálohovat k sobě na počítač dejme tomu 1000 souborů ač malých ale tisíc je na docela dlouhou dobu.
Probůh, co to tady řešíte? Jak zaplnit 33 bajtovými soubory, které tvoří asi 0.01% celkové velikosti dat, celou kvótu?
DaMage:
33 bajtov v súbore... ale pri zlom resp. staršom filesysteme alokuje aj niekoľko kb - podľa nastavenia alokačných jednotiek... aj keď na novších FS je niečo také už vyriešené.
Ale i tak je to přeci úplně jedno. Pokud je v jednom adresáři řekněme 200 kB obrázků a 50 kB textu, je jeden soubor navíc umístěný do alokační jednotky třeba 2 KiB zcela zanedatelný.
Diskuse je zrušena z důvodu spamu.