> ez eszembe jutott nekem is, de egy többezres (ne adj isten több
> tízezres) tételsornál ez mennyire működik?
> hogyan lehet automatizálni?
Erre rendkívül sok megoldás van. Ha ugyanaz a bejövő és a cél URL, csak az
azonosító változik, akkor egy egyszerű reguláris kifejezéses .htaccess
apache redirect megoldja kb. így:
<Directory />
Options
AllowOverride FileInfo
RewriteEngine on
RewriteRule ^(.*)/test/(.*) http://xxx.example.com/target/$2
</Directory>
Ha a cél URL az azonosítótol függ, akkor a legegyszerűbb talán csinálni
egy txt fájlt, amiben a tételek vannak valami nagyon egyszerű formátumban
(pl. azonosító, szóköz, URL) és ezt vagy betölteni egy indexelt
adatbázisba, amit majd az operációs rendszer a memóriába gyorsítótáraz
(LAMP esetén), vagy betölteni egy memóriába maradó, indexelt singleton
adatstruktúrába, mondjuk Java HashTable-be (JSP/Tomcat esetén) vagy C++
B-fába (saját C++ HTTP szerver esetén) - ez már izlések, pofonok és
pénztárcák esete ;)
Ha az azonosítók nagyjából folytonosan kitöltik az egész számok terét
mondjuk tízmillióig, akkor akár egy sima tömbbe is berakhatjuk az URL-eket
és garantáltan mindíg villámgyors lesz (programnyelvtől függően ehhez
lehet, hogy kicsit állítgatni kell a memória-beállításokat a fordítóban /
interpreterben, nehogy kifussunk a stack / heap / data segment / stb.
tartományából).
A mai számítókapacitással pár tízezer tétel abszolút nem téma, ha az
azonosítók egész számok: az első kezembe eső, 17 virtuális szervert is
futtató, egy éves, akciósan vett szerveren egy 504 592 rekordot tartalmazó
indexel MySQL táblából egész azonosítóra keresve az összesen tíz darab,
egyesével lekért, egy-két kilobájtos rekordok előszedése és a kliensnek
elküldése {0.02, 0.00, 0.00, 0.00, 0.01, 0.01, 0.02, 0.03, 0.05, 0.03}
másodpercig tartott, pedig ez jóval nagyobb feladat volt. De már ez is
másodpercenként 30 nem ismétlődő kérést szolgálna ki simán egyetlen
processzorral - és ezen még sokat lehetne gyorsítani a query_cache_size
növelésével, mert ebben az esetben ugyanazt a kérést másodjára már a
dedikált MySQL gyorsítótárból szedné és onnan tapasztalataim szerint
mindíg 0.00 másodperc alatt jön a válasz ;)
A .htaccess fájl nem tudom, hogy mennyire lesz jó pár százezer különböző
tételhez - de kiváncsi vagyok rá és jó eséllyel a fájlt ramdisk-re másolva
pár tízezer tételt úgy is ki tud szolgálni egy mai gép ;)
Maradok:
Nagy Elemér Károly