Google'de ararken şu kodu buldum...
//yaklaşık 10Kbyte/sn download limiti için
$packet_interval = 1; # 1=> yavas, 0.5 => orta, 0.3 => hızlı
$packet_size = (10 * 1042); # 10 => yavas, 40=> orta, 90=> hızlı
$file = './dosya.mp3'; # dosyanın tam adresi olmalı
$fileSize = filesize($file);
//örnek mp3 olduğu için mp3 için gerekli headerları gönderelim
header("Content-Type: audio/mpeg");
// Dosya adını özellikle değiştiriyorum ki dosya adı ve adresi öğrenilemesin
header("Content-Disposition: attachment; filename="downloaddosya.mp3"");
header("Content-Length: " . $fileSize);
$fh = fopen($file, 'rb');
while(!feof($fh)) {
# başlangıç zamanı
list($usec, $sec) = explode(' ', microtime());
$time_start = ((float)$usec + (float)$sec);
# gönderilecek paket büyüklüğü
print(fread($fh, $packet_size));
# bitiş zamanı
list($usec, $sec) = explode(' ', microtime());
$time_stop = ((float)$usec + (float)$sec);
# gönderilecek paket büyüklüğü aralıktan büyükse scripti bekletelim
$time_difference = $time_stop - $time_start;
if($time_difference < (float)$packet_interval){
usleep((float)$packet_interval * 1000000 - (float)$time_difference * 1000000);
}
}Umarım işine yarar.