Autor Zpráva
fuckin
Profil
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
bohuzel jde pouze nacteni souboru primo nebo pres header(attachement ) (to musis nastudovat) ale to jde nejak vysledovat pres pakety..
fuckin
Profil
Ano přesně toto jsem nechtěl.
fuckin
Profil
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
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
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
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
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
Ve skriptu zkus použít hlavičku X-Sendfile - ta by měla Lighttpd instruovat, aby odeslal obsah libovolného souboru.
fuckin
Profil
Davex:
Jestli to bude fungovat tak máš u mě pořádnej respekt :). wow, vypadá to suprově

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: