Bonjour,
Voila, mon but est de limiter la vitesse de téléchargement de fichiers présent sur un serveur ftp... le soucis ? c'est que contrairement au script "de base" ou l'on place le nom du fichier directement dans le fichier et la tout fonctionne !
Voici le script de base :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 
<?php
 
// le fichier que vous voulez envoyer
$local_file = 'test-file.zip';
// le nom du fichier que l'utilisateur aura par defaut
$download_file = 'your-download-name.zip';
 
// ici vous changer la vitesse de download (=> 20,5 kb/s)
$download_rate = 20.5;
if(file_exists($local_file) && is_file($local_file)) {
    // send headers
    header('Cache-control: private');
    header('Content-Type: application/octet-stream');
    header('Content-Length: '.filesize($local_file));
    header('Content-Disposition: filename='.$download_file);
 
    // flush
    flush();
    // ouvre le fichier
    $file = fopen($local_file, "r");
    while(!feof($file)) {
 
        // envoie le fichier au navigateur
        print fread($file, round($download_rate * 1024));
 
        // flush le contenu du browser
        flush();
 
        // attend 1 seconde
        sleep(1);
    }
 
    // ferme le fichier
    fclose($file);}
else {
    die('Error: The file '.$local_file.' does not exist!');
}
?>
Eh bien dans mon cas, le nom du fichier est tiré a partir d'une bdd...ca fonctionne, ca trouve bien le fichier.. mais le soucis c'est que la vitesse n'est pas correcte et que le téléchargement se coupe !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
 
<?php
 
include "connect_db.php";
 
if (isset($_GET['login']) && isset($_GET['code']) && isset($_GET['f']) && isset($_GET['lien']) ) {
$login = $_GET['login'];
$code = $_GET['code'];
$f = $_GET['f'];
$lien = $_GET['lien'];
 
if( strlen( $code ) == 7 ) {
 
if($lien == 'lien1')
    {
$sql = 'SELECT lien1 FROM bdd WHERE numero = "' . $f . '"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);
mysql_free_result ($req);
$lien = $data['lien1']; 
    }
elseif($lien == 'lien2') 
    {
$sql = 'SELECT lien2 FROM bdd WHERE numero = "' . $f . '"';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);
mysql_free_result ($req);
$lien = $data['lien2']; 
    }
else 
    {
    echo "<b>Erreur !</b> Votre demande n'a pas &eacute;t&eacute; identifi&eacute;e. Veuillez r&eacute;iterez votre choix.<br>";
    }
 
 
$sql = 'SELECT time FROM membre WHERE login = "' . $login . '" ';
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_array($req);
mysql_free_result ($req);
 
$time = $data['time'];
$timestamp = time();
 
if  ($time>$timestamp) {
$vitesse = 600; 
 }
else {
$vitesse = 200;
}
 
 
// le fichier que vous voulez envoyer
$local_file = ''.$lien.'';
// le nom du fichier que l'utilisateur aura par defaut
$download_file = ''.$lien.'';
 
// ici vous changer la vitesse de download 
$download_rate = $vitesse;
 
if(file_exists($local_file) && is_file($local_file)) {
    // send headers
    header('Cache-control: private');
    header('Content-Type: application/octet-stream');
    header('Content-Length: '.filesize($local_file));
    header('Content-Disposition: filename='.$download_file);
 
    // flush
    flush();
    // ouvre le fichier
    $file = fopen($local_file, "r");
    while(!feof($file)) {
 
        // envoie le fichier au navigateur
        print fread($file, round($download_rate * 1024));
 
        // flush le contenu du browser
        flush();
 
        // attend 1 seconde
        sleep(1);
    }
    // ferme le fichier
    fclose($file);}
else {
    die('Error: The file '.$local_file.' does not exist!');
}
 
 } 
 else {
echo '<b>Erreur!</b> Vous pensiez r&eacute;ellement pouvoir tricher ainsi ?! <br> ';
}
}
 else {
echo '<b>Erreur!</b> Nous n\'avons pas compris votre demande ! <br> ';
}
?>
Je précise : $vitesse est bon et pourtant dans le 1er cas, ca tourne plutot dans les environs de 200 Ko/s et dans le 2ème : 300-50 Ko/s ....
Mais le soucis le plus contraignant c'est que le téléchargement se coupe !!!
( un peu moins que la moitié du fichier.... ) et là c'est vraiment un gros soucis !

Quelqu'un aurait-il une idée du pk et comment résoudre le problème please ?


En vous remerciant de tout coeur...