Page 1 sur 1

Limiter la vitesse de dl au personne non enregistré

Posté : 12 févr. 2013, 18:28
par squallblanc
Salut à tous, suis encore confronté à un problème pour un de mes site...
Je prose des fichiers en dl hébergé sur mon serveur et je voudrais pouvoir limité la vitesse de dl au utilisateurs non enregistrés 75ko et 200 pour les enregistrés.
Pour télécharger mes fichier j'utilise le code suivant:
function telecharger_fichier($fichier, $id = 0)
{
 $chemin = id_dossier($id) . $fichier;
 if(file_exists($chemin) && strpos($fichier, '/') === FALSE && strpos($fichier, '.') !== 0)
 {
  header('Content-Description: File Transfer');
  header('Content-Type: application/octet-stream');
  header('Content-Disposition: attachment; filename='. basename($chemin));
  header('Content-Transfer-Encoding: binary');
  header('Expires: 0');
  header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
  header('Pragma: public');
  header('Content-Length: ' . filesize($chemin));
  readfile($chemin);
  
	include("data_bd.php");
	connexion_bd();
	$insert = mysql_query("UPDATE roms SET download = (download+1) WHERE id=".$_GET['dl']."");

	if (!$insert){
		die('Requête invalide : ' . mysql_error()); 
	}
 
  exit; 	  
 }
 else
  require('erreur.php');
}
Pour la partie limite de débit je ne vois pas comment faire, j'ai test le seul bout de code dispo sur la toile mais ça ne fonctionne pas.
Si vous avez des solutions je suis preneur.
Merci

Re: Limiter la vitesse de dl au personne non enregistré

Posté : 12 févr. 2013, 21:45
par sam12
Aucune idée si ça marche mais j'ouvrirai le fichier et je jouerai avec fread quelque chose comme:
fread($fichier, $tavitesse); et tu fais un sleep(1) pour limiter ta vitesse à X ko/sec. Tu mets tout ça dans une boucle qui check qu'on est pas à la fin du fichier et il faudrait peut-être vider les tampons et envoyer ça au navigateur à chaque itération de la boucle (à tester).
J’espère que j'ai été assez clair :D

Re: Limiter la vitesse de dl au personne non enregistré

Posté : 13 févr. 2013, 09:54
par xTG
Je pense pas que ça soit une bonne idée.
Pendant un temps je pense que c'était ainsi que fonctionnait la plateforme d'hébergement de fichier rapidshare.
Sauf que beaucoup de navigateurs annulaient le téléchargement, sans doute en pensant que le serveur ne répondait plus.

Je pense que pour cela c'est pas au niveau du code qu'il faut regarder mais plutôt au niveau du serveur et de sa configuration.
Voire même lui rajouter un service qui gère cela. Mais là j'avoue que je parle mais j'y connais rien...

Re: Limiter la vitesse de dl au personne non enregistré

Posté : 13 févr. 2013, 10:41
par squallblanc
Merci pour vos réponses :D . Il est vrais que j'ai trouver des fonctionnalité pour limiter la vitesse des téléchargements via le serveur le problème c'est que pour l'instant je ne suis pas sur dédié...
Sinon l'alternative serai de limiter le nombre de dl par ip.

Re: Limiter la vitesse de dl au personne non enregistré

Posté : 13 févr. 2013, 11:41
par sirakawa
Est-il possible de passer par FTP:
deux serveurs ftp distincts réglés diféremment, un pour les anonymes (limite de vitesse ou du nb de connexions simultanées),un pour les enregistrés, en passant par les fonctions ftp de PHPour le téléchargement ?

Re: Limiter la vitesse de dl au personne non enregistré

Posté : 13 févr. 2013, 23:35
par squallblanc
je n'ai pas exploré cette piste pour l'instant mais je vais explorer cette piste.
Merci

Re: Limiter la vitesse de dl au personne non enregistré

Posté : 16 févr. 2013, 14:04
par Perine
Les dernières versions d'Apache permettent de réduire la vitesse de téléchargement artificiellement.
http://httpd.apache.org/docs/2.4/mod/mod_ratelimit.html