Не полностью отдаются файлы

A
На сайте с 18.02.2009
Offline
46
501

Господа подскажите...исходные данные, виндовая машина, отдаю фильмы, если локально качать, отдаются 100%, а если удаленно, то файлы не докачиваются. Вот код, который отдает...помогите ребята

<?php

include ("core/config.php");
include ("core/function.php");

function stop_page()
{
header($_SERVER["SERVER_PROTOCOL"] . " 403 Not Found");
die();
}


$user_id=$_SESSION[vdb_id];


if ($_REQUEST["action"]!="dldc")
{
session_write_close();
if ($config[$_SERVER["SERVER_ADDR"]."_download_http"]!=1) stop_page();

$fn = $_REQUEST['f'];

$sel = 'SELECT * from `scanfile` where id="'.$fn.'" ';
$tmp1 = runSQL($sel);

$sel1 = 'SELECT codirovka,user,password,tip from `istochniki` where id="'.$tmp1[0][istoch].'" ';
$tmp2 = runSQL($sel1);

$filename = $tmp1[0]["url"]."/".$tmp1[0]["name"];
$filename=convert_codir ($filename,"utf-8",$tmp2[0]["codirovka"]);

if(!file_exists($filename))
{
header($_SERVER["SERVER_PROTOCOL"] . " 404 Not Found");
exit;
}
//Пишем хит на пользователя на фильм
$INSERT = 'INSERT INTO `hits` SET userid="'.$user_id.'", filmid="'.$tmp1[0][id_film].'", date="'.time().'"';
$id = runSQL($INSERT);

if($config["stattip"]=="win")
{
$tmp=filesize($filename);
if ($tmp<0)
{
//определяем размер файла средствами виндовс
$files=str_replace("/","\\",$filename);
exec('dir "'. $files.'" ',$out);
$lines=convert_codir($out[6],"cp866","utf-8"); // из кодировки доса в рабочую
preg_match_all('/1 файлов (.+) байт/i', $lines, $matches, PREG_SET_ORDER);
$replace=array(" ",chr(194),chr(160));
$tmp=str_replace($replace,"",$matches[0][1]);
}
}elseif ($config["stattip"]=="linux"){
$tmp = exec ('stat -c %s \''. $filename.'\'');
}elseif ($config["stattip"]=="freebsd"){
$tmp = exec ('stat -f %z \''. $filename.'\'');
}elseif ($config["stattip"]=="php"){
$tmp=filesize($filename);
}

$fsize = $tmp;
//$ftime = date("D, d M Y H:i:s T", filemtime($filename));
$fd = @fopen($filename, "rb");

if(!$fd)
{
header($_SERVER["SERVER_PROTOCOL"] . " 403 Forbidden");
exit;
}
function translitIt($str)
{
$tr = array(
"А"=>"a","Б"=>"b","В"=>"v","Г"=>"g",
"Д"=>"d","Е"=>"e","Ж"=>"j","З"=>"z","И"=>"i",
"Й"=>"y","К"=>"k","Л"=>"l","М"=>"m","Н"=>"n",
"О"=>"o","П"=>"p","Р"=>"r","С"=>"s","Т"=>"t",
"У"=>"u","Ф"=>"f","Х"=>"h","Ц"=>"ts","Ч"=>"ch",
"Ш"=>"sh","Щ"=>"sch","Ъ"=>"","Ы"=>"yi","Ь"=>"",
"Э"=>"e","Ю"=>"yu","Я"=>"ya","а"=>"a","б"=>"b",
"в"=>"v","г"=>"g","д"=>"d","е"=>"e","ж"=>"j",
"з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l",
"м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r",
"с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h",
"ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y",
"ы"=>"yi","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya",
" "=> "_", "."=> ".", "/"=> "_"
);
return strtr($str,$tr);
}

//$download_file = urlencode($tmp1[0]["name"]);
//$download_file = str_replace('_', '%20',$tmp1[0]["name"]);
header($_SERVER["SERVER_PROTOCOL"] . " 200 OK");
header("Content-Disposition: attachment; filename=".translitIt($tmp1[0]["name"]));
//header("Content-Disposition: attachment; filename=".str_replace('_', '%20',$tmp1[0]["name"]));
//header("Content-Disposition: attachment; filename=".$tmp1[0]["name"]);
//header("Content-Disposition: attachment; filename=".urlencode($tmp1[0]["name"]));
header("Last-Modified: $ftime");
header("Accept-Ranges: bytes");
header("Content-Length: " . ($fsize-$range) );
header("Content-Range: bytes $range-".($fsize -1). "/" . $fsize);
header("Content-Type: application/octet-stream");

while (!feof($fd))
{
print fread($fd, 8192);
}

fclose($fd);

exit;

}elseif ($_REQUEST["action"]=="dldc")
{
if ($config[$_SERVER["SERVER_ADDR"]."_download_dc"]!=1) stop_page();
//Пишем хит на пользователя на фильм
$INSERT = 'INSERT INTO `hits` SET userid="'.$user_id.'", filmid="'.$_GET[filmid].'", date="'.time().'"';
$id = runSQL($INSERT);

}


?>

Аккаунты на торрент-трекеры. () Тут дают деньги!!! (http://Pop-Bazar.com/registration.php?ref=2115)
siv1987
На сайте с 02.04.2009
Offline
427
#1

Не докачиваются - нет поддержки докачки или не отдаются полностью? Какого размера файлы? Сколько мб отдается, сколько еще остается для полной закачки? Маленькие файлы тоже не докачиваются?

C
На сайте с 04.02.2005
Offline
291
#2
while (!feof($fd))
{
print fread($fd, 8192);
}

fclose($fd);

время выполнения скрипта

A
На сайте с 18.02.2009
Offline
46
#3

Всем спасибо, немножечко переделал, и все работает :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий