[php] downloadsnelheid limiet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Beste tweakers,

Ik ben bezig met een files sectie op mijn website. Nou wil ik voor gasten een limiet op de download snelheid zetten van 50kb/s. Geregistreerde members kunnen gewoon volle snelheid downloaden. Ik had al beetje rond gezocht hier en was deze topic tegen gekomen:
Met PHP downloadsnelheid aansturen

Alleen ik krijg dit niet aan het werk. Iemand die mij dit misschien kan uitleggen?

Alvast bedankt!

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

"maar ik krijg dit niet aan het werk" is een beetje een magere probleem omschrijving. De werking is in principe redelijk simpel: Zorg dat je niet meer bytes verstuurt in een bepaalde tijds periode.

Wat heb je al geprobeerd en waarom lukte dat niet?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nou ik heb dat script dus toegevoegd aan mijn download.php. Ik heb dus in $fp de url naar mijn bestand gezet. Alleen ik krijg de error dat hij hem niet kan openen. Daardoor gaat ie de while lus niet in. Waar kan het aanliggen dat hij mijn bestand niet kan openen? Heb permissions op 777 gezet.

Krigj dan deze error:

failed to open stream: HTTP request failed! HTTP/1.1 401 Authorization Required

[ Voor 16% gewijzigd door Verwijderd op 26-01-2006 13:07 ]


Acties:
  • 0 Henk 'm!

  • pietje63
  • Registratie: Juli 2001
  • Laatst online: 16:14

pietje63

RTFM

Jje point nu naar het bestand via de url? kennelijk heeft hij via die weg geen toegang tot het bestand (.htaccess?). Probeer eens via het file systeem naar het bestand te wijzen.

(maar dat is gewoon kwestie van foutmelding lezen..)

[ Voor 14% gewijzigd door pietje63 op 26-01-2006 13:23 ]

De grootste Nederlandstalige database met informatie over computers met zoekfunctie!!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ok na wat gekloot ben ik iets verder gekomen met dit script:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?
$fileName = $file['file_name'];
$fileLocation = "/domains/domein.net/public_html/downloads/".$file['file_category']."/";

$speed = 50;

header("Cache-control: private");
header('Content-Description: File Transfer'); 
header('Content-Type: application/force-download'); 
header('Content-Length: ' . filesize($fileLocation . $fileName)); 
header('Content-Disposition: attachment; filename=' . $fileName);

if (!$file = fopen($fileLocation . $fileName, 'r')) {
    exit;
}

while (!feof($file)) {
    echo fread($file, $speed * 1024 * 8);
    flush();
    sleep(1);
}

@fclose($file);
?>


Als ik dit script gebruik dan lijkt het net of het werkt alleen als ik op opslaan druk dan is elk bestand maar een paar kb. Ze zijn dus allemaal corrupt.

En ja bij domein.net staat in mijn script wel het goede domein.

[ Voor 26% gewijzigd door Verwijderd op 26-01-2006 14:40 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
sorry, ik zal de regels onder tussen eens doorlezen..

[ Voor 84% gewijzigd door Verwijderd op 26-01-2006 15:04 ]


Acties:
  • 0 Henk 'm!

  • rjn27
  • Registratie: Juni 2002
  • Laatst online: 30-08 11:25
je mag niet schoppen binnen 24 uur lees de huisregels meer eens .
geef mensen even de tijd om te reageren
Modbreak:En jij hoort daarvoor niet in een topic te reageren, maar dat te melden via een topic report. ;)

[ Voor 35% gewijzigd door NMe op 26-01-2006 15:07 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik schop hem dus nu nog een keer omhoog!

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Als je geholpen wilt worden zul je wel ietsje meer informatie moeten geven. Hoe ziet het bestand eruit wat je binnen krijgt? Heb je dat al een keertje geopend in notepad oid?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Weet je zeker dat de map /domains/domein.net/public_html/downloads/$file['file_category']/ bestaat? domains komt niet echt over als een map die normaal in de root van Linux/UNIX-systemen zit. Bedoel je niet /var/www/domains/domein.net/public_html/downloads/$file['file_category']/?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Pete
  • Registratie: November 2005
  • Laatst online: 07-09 17:51
of /home/'user'/domains/.....


(zoals bij standaard Direct-Admin configuraties het geval is)

petersmit.eu


Acties:
  • 0 Henk 'm!

  • MisterData
  • Registratie: September 2001
  • Laatst online: 29-08 20:29
Gebruik ook set_time_limit(0); anders houdt je script er na 30 seconden mee op, en dan worden lange bestanden dus halverwege afgebroken :)

Acties:
  • 0 Henk 'm!

  • Jurgle
  • Registratie: Februari 2003
  • Laatst online: 24-06 00:27

Jurgle

100% Compatible

Nee, tijdens een sleep() staat de executietijd van php stil.

Wat volgens mij fout gaat is fread... leest deze wel voorbij 'end of lines'? Is de max hier niet 4096 voor? php.net/fread en php.net/fgets

succes

My opinions may have changed but not the fact that I am right ― Ashleigh Brilliant


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb nu de lokatie aangepast naar dit:

PHP:
1
$fileLocation = "downloads/".$file['file_category']."/";


Nu download hij het bestand wel, alleen gewoon met volle snelheid.

Het bestand wat ik download is een .rar en als ik het open dan staat boven en onder aan een stuk van mijn html source code. Ik kan het rar bestand wel gewoon uitpakken. Is dat normaal dat ie hem dan nog gewoon kan uitpakken?

het duurt ook best lang voordat de pop up te voorschijn komt als ik op download druk. Hoop dat jullie me iets verder kunnen helpen.

EDIT

PHP:
1
$fileLocation = "/home/user/domains/domein.net/public_html/downloads/".$file['file_category']."/";


met dit path werkt het ook, alleen dan download ie ook weer met volle snelheid.

[ Voor 19% gewijzigd door Verwijderd op 28-01-2006 12:24 ]


Acties:
  • 0 Henk 'm!

  • c0deaddict
  • Registratie: Mei 2004
  • Laatst online: 17-07 10:16

c0deaddict

Don't be lame, be KLEI

Kan je niet beter usleep gebruiken ipv. sleep?
Let er dan wel op dat usleep een 'x' aantal microseconden slaapt!

Acties:
  • 0 Henk 'm!

  • Kama
  • Registratie: Mei 2002
  • Laatst online: 30-06 10:52

Kama

Game Coordinator

Errm... 40 * 1024 * 8 = 327680 bytes

Dus zoveel bytes doet ie in 1x... da's best veel. Maak $speed eens 1.

drs. Kama


Acties:
  • 0 Henk 'm!

  • TheLunatic
  • Registratie: April 2001
  • Laatst online: 16-08 21:48

TheLunatic

Ouwe boxen.

Waarom wil je het per se met PHP? Kun je niet een FTP-server draaien met een guest en een member-account, en op die accounts de snelheden limiteren?

Mother, will they like this song?


Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
Kama schreef op zaterdag 28 januari 2006 @ 15:24:
Errm... 40 * 1024 * 8 = 327680 bytes

Dus zoveel bytes doet ie in 1x... da's best veel. Maak $speed eens 1.
Je hebt speed opgegeven in bytes, terwijl uit je berekening blijkt dat je bits bedoelde. Dus de *8 moet weg.
Pagina: 1