Autor | Zpráva | ||
---|---|---|---|
fuckin Profil |
#1 · Zasláno: 6. 2. 2010, 20:25:00
Ahojte,
řeším celkem vážný problém, který jsem zatím ani zdaleka nevyřešil. Načítat soubor přes PHP a odesílat na buffer není možné (fileserver neunese takovou zátěž a spadne(zacyklí se)). Potřebuji otevřít "skryté" spojení na soubor aby se v prohlížeči stáhl standartním způsobem. Např přesměrováním, nicméně je tu jedna důležitá podmínka. Nesmí být zjistitelný přímý odkaz na soubor. Jak by jste toto řešili vy? |
||
pitomec Profil |
#2 · Zasláno: 7. 2. 2010, 12:09:47
bohuzel jde pouze nacteni souboru primo nebo pres header(attachement ) (to musis nastudovat) ale to jde nejak vysledovat pres pakety..
|
||
fuckin Profil |
#3 · Zasláno: 8. 2. 2010, 06:30:31
Ano přesně toto jsem nechtěl.
|
||
fuckin Profil |
#4 · Zasláno: 8. 2. 2010, 15:51:32
Lze přes php redirectnout na soubor s ip adresou rovnu aktuálnímu serveru?
Jestli ano pak by šlo zablokovat ip na všechny adresy krom serveru a nebyl by možný přímý přístup k souboru. |
||
AM_ Profil |
#5 · Zasláno: 8. 2. 2010, 16:17:46
fuckin:
Jakmile se jednou budeš někam skutečně přesměrovávat, nevyhneš se prostě tomu, že k souboru existuje přímá URL, kterou má návštěvník šanci zjistit. Pro stahování souborů je šikovná funkce readfile(). Nicméně: „Načítat soubor přes PHP a odesílat na buffer není možné (fileserver neunese takovou zátěž a spadne(zacyklí se)).“ tohleto vůbec nechápu, já si dělal stahovací skripty několikrát a nikde se mi nic necyklilo. Pochopil bych, že přeteče buffer, ale předpokládám, že PHP ho v takovém případě flushne a nespadne. A už vůbec nechápu, co by se mělo cyklit, pokud "zacyklení" neříkáš obecně tomu, že se něco zasekne. |
||
fuckin Profil |
#6 · Zasláno: 8. 2. 2010, 20:42:21
Ok, vysvětlím. Děláme stahovací web velikosti největších firem v ČR. Na fileserveru který je založen na lighthttpd. PHP je tam jen okrajově jako cgi modul, takže zázraky od něj čekat nemůžu. Při vysokém trafficu tedy např. několik TB za den, skript narazí na strop php a zacyklí se.
Stačí to takto? Odesílá readfile data rovnou na výstup nebo něco dává do RAMek? Jinými slovy, nezatíží tato funkce příliš php? „akmile se jednou budeš někam skutečně přesměrovávat, nevyhneš se prostě tomu, že k souboru existuje přímá URL, kterou má návštěvník šanci zjistit.“ Ano, ale kdyby byl omezený přístup jen na ip serveru pak by se toto elegantně vyřešilo. |
||
AM_ Profil |
#7 · Zasláno: 8. 2. 2010, 20:48:48
fuckin:
„Ano, ale kdyby byl omezený přístup jen na ip serveru pak by se toto elegantně vyřešilo.“ jenže když omezíš přístup jen na IP serveru, tak na ten skript zase nikoho nepřesměruješ :) Se zbytkem ti bohužel nepomůžu, nikdy jsem nedělal program podléhající takovéto zátěži. Ovšem spíš mi přijde trochu absurdní, že server s trafficem pár TB za den má PHP nainstalované jako CGI modul; to asi nebude nikdy běhat rychle. Jediné, co mě napadá: jestli je smysl stahování přes PHP nějaká autorizace, tak se vykašlat na PHP a použít klasickou HTTP autorizaci; tím dostaneš soubory pod zámek a nebudeš muset řešit PHP. |
||
fuckin Profil |
#8 · Zasláno: 8. 2. 2010, 20:53:55
AM:
„Jediné, co mě napadá: jestli je smysl stahování přes PHP nějaká autorizace, tak se vykašlat na PHP a použít klasickou HTTP autorizaci; tím dostaneš soubory pod zámek a nebudeš muset řešit PHP.“ muzes to nejak upresnit? Máš na mysli autorizaci přes htaccess? Moc nechápu k čemu by toto bylo dobré, asi se mýlím ale není nutnost tam zadávat přístupové údaje ručně? Jo a ještě jedna poznámka, lighthhtpd nemá htaccess. |
||
Davex Profil |
#9 · Zasláno: 8. 2. 2010, 21:24:35
Ve skriptu zkus použít hlavičku X-Sendfile - ta by měla Lighttpd instruovat, aby odeslal obsah libovolného souboru.
|
||
fuckin Profil |
#10 · Zasláno: 8. 2. 2010, 21:33:27
Davex:
Jestli to bude fungovat tak máš u mě pořádnej respekt :). wow, vypadá to suprově |
||
Časová prodleva: 14 let
|
0