Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Download fajlova

[es] :: PHP :: Download fajlova

[ Pregleda: 4806 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

dejan
Beograd

Član broj: 909
Poruke: 388
*.ppp-bg.sezampro.yu



Profil

icon Download fajlova14.10.2003. u 15:00 - pre 249 meseci
Interesuje me par stvari vezano za download kada se link skriva na ovaj nacin:

Code:

header("Content-Type: application/force-download");
header("Content-Transfer-Encoding: Binary");
header("Content-Length: ".filesize("../$file"));
header("Content-Disposition: attachment; filename=\"".basename($file)."\"");
readfile("../$file") or die ("File read error");
exit;


1. Koliko to opterecuje server? U pitanju ce nekad biti fajlovi od po nekoliko stotina MB pa ne bi bas hteo da mi server puca ili sta vec...

2. Kako mogu u tom slucaju (posto sve ide preko HTTPD-a) da pratim "zauzetost" servera, ogranicim broj downloada i sl?
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Download fajlova14.10.2003. u 22:16 - pre 249 meseci
isto je kao i da download-uješ direktno. I jedno i drugo ide preko HTTPD-a. Razlika je jedino u tome što u slučaju bez php-a je HTTPD taj koji čita fajl sa diska, a ovde to radi php. Razlika u brzini je razlika u brzini obrade kroz php > libc, odnosno direktne obrade preko libc funkcija, što ne bi trebalo da bude velika razlika. E sada... implementacija readfile funkcije može da predstavlja problem, (ukoliko sve učita u memoriju pa onda lupi korisniku kroz TCP socket) ali ne verujem da tako radi, već mislim da funkcioniše tako što čita neki deo pa to prosledi i tako redom.
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

-zombie-
Tomica Jovanovic
freelance programmer
ni.ac.yu

Član broj: 4128
Poruke: 3448
*.verat.net

Sajt: localhost


+5 Profil

icon Re: Download fajlova15.10.2003. u 15:44 - pre 249 meseci
pa.. ima tu još jedna začkoljica osim te da li readfile() čita sve u memoriju (što se može proveriti, a i ako čita, može se uvek koristiti fopen() fread($fp, 4096) ili šta već).

ta druga stvar je to što ako su stvarno fajlovi tako veliki, velika je šansa sa prenos podataka u jednom trenutku pukne, pa bi valjalo da on može da se nastavi.

sa ovim jednostavnim kodom se to neće desiti, nego će download početi isponova.


da bi ovo implementirao, moraš da proveriš da li je u zahtevu poslat Range heder (valjda "Range: bytes=100-200" ili slično. potraži u http/1.1 rfc-u), pa ako jeste, da pošalješ samo zahtevani deo fajla (shvatićeš već detalje iz dokumentacije)
 
Odgovor na temu

dejan
Beograd

Član broj: 909
Poruke: 388
*.ppp-bg.sezampro.yu



Profil

icon Re: Download fajlova17.10.2003. u 13:09 - pre 249 meseci
Da, shvatam da bi ne bi bilo resume opcije u slucaju puknutog downloada, sto mi i nije toliki problem.

A znaci kako bi mogao da kontrolisem kolicinu downloada u svakom trenutku? Nesto tipa kao sto kod FTP-a moze da se definise maximalni broj konekcija i sl?
 
Odgovor na temu

stanoje
php+mysql coravljenje
Batajnica

Član broj: 602
Poruke: 56
*.korisnici.absolutok.com



Profil

icon Re: Download fajlova23.10.2003. u 13:17 - pre 249 meseci
Citat:
dejan:
Da, shvatam da bi ne bi bilo resume opcije u slucaju puknutog downloada, sto mi i nije toliki problem.

A znaci kako bi mogao da kontrolisem kolicinu downloada u svakom trenutku? Nesto tipa kao sto kod FTP-a moze da se definise maximalni broj konekcija i sl?


broj konekcija ide tako sto update u bazi na pocetku broj konekcija za 1
tj UPDATE konekcije SET brk=brk+1
a posle toga(na kraju skripta)
kazes
UPDATE konekcije SET brk=brk-1
Sad tu imades stvar poznatu kao race condition koja je ovako malo smanjena jer SQL radi pos'o, tj ne cupas sa php-om uvecavas za jedan pa updatujes. Jos jedna stvar morao bi da LOCK-ujes tu tabelu jer zamisli situaciju kad imas dva php skripta koja se izvrsavaju u slicnim vremenima.

Last but not the least, sto ne pustis Apache-u da radi svoj poso
(vidi Header("Location:") f-ju), jedino je opravdanje da nesto hoces da zabranis, naplatis,ogranicis kod downloada.
E kad se vec zezas ta time onda bi mogao da vidis i da li Header("Location:") podrzava Range:bytes=x-y, pa da podelis ovde sa nama to. Ideja je da php-om samo prihvatis zahtev, da ga onda preusmeris HTTPD-u sa sve Range headerom.

Sima Kosmos iz dalekog svemira
 
Odgovor na temu

kizo001
Rijeka, HR

Član broj: 16477
Poruke: 48
*.cmu.carnet.hr

Sajt: www.akordi-note.110mb.com


Profil

icon Re: Download fajlova23.11.2003. u 13:37 - pre 248 meseci
Kako da pokraj fajla koji mi je za download stavim brojac koliko je puta skinut taj fajl? Ako tko moze odgovoriti, ali da malo bolje objasni. HVALA
 
Odgovor na temu

[es] :: PHP :: Download fajlova

[ Pregleda: 4806 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.