|
|
|
|
|
для: Trianon
(04.08.2008 в 15:51)
| | Спасибо, буду знать! | |
|
|
|
|
|
|
|
для: fivemusic
(04.08.2008 в 10:38)
| | http://www.php.net/manual/ru/ini.core.php#ini.memory-limit | |
|
|
|
|
|
|
|
для: fivemusic
(03.08.2008 в 21:07)
| | Такс, скрипт сделал. - При чтонии данных сделал что бы они писались (или уже дописывались) сразу в файл, потом идет сравнение размеров и все. - Пробовал загрузить скриптом на сайт 170 mb - прокатило! Причем очень быстро - меньше чем за 30 сек.
Но насчет переменной я так инфы и не нашел !!! Скажите ответ! | |
|
|
|
|
|
|
|
для: Trianon
(03.08.2008 в 20:38)
| | Если честно то понятия не имею! =) | |
|
|
|
|
|
|
|
для: fivemusic
(03.08.2008 в 19:42)
| | Как Вы думаете, какой длины строку можно положить в переменную? | |
|
|
|
|
|
|
| Здравствуйте!
Написал скрипт в котром есть поле куда вводишь урл на файл жмешь кнопку - файл закачивается на сервер. Проблема в том, что файлы более 1 МБ не закачиваются... Сделал загрузку по частям, закачивается только 1 мб если сделать обычную загрузку (не по частям то максимально закачивается 15 мб примерно за 1-2 сек) Как сделать поправить скрипт чтобы грузил по частям скажем файлы до 150 мв. Вот скрипт :
<form><input type=text name=url value="" style="width:650px"><input type=submit></form>
<pre>
<?
set_time_limit(0);
echo time()."\n";
if($_GET[url])
{
if($x=get_parameter($_GET[url]) AND $x[range])
echo "Файл : ".$x[name]." Размер : ".$x[size]."\n";
if($content=download_x($_GET[url],$x[size]))
{
$time=time();
$folder=$_SERVER[DOCUMENT_ROOT]."/download/other/$time";
if(!file_exists($_SERVER[DOCUMENT_ROOT]."/download")) mkdir($_SERVER[DOCUMENT_ROOT]."/download", 0777);
if(!file_exists($_SERVER[DOCUMENT_ROOT]."/download/other")) mkdir($_SERVER[DOCUMENT_ROOT]."/download/other", 0777);
if(!file_exists($folder)) mkdir($folder, 0777);
$f=fopen("$folder/".$x[name], w);
fwrite($f, $content);
fclose($f);
echo "Файл закачан! <br>\n$_GET[url]\n<br>Размер:".$x[size];
}
else echo "РАзмеры не совпадают!";
}
else echo "Файл не поддерживает докачку!";
function download_x($url,$size,$stek=30000)
{
$stek=$stek*1024;
$url = parse_url($url);
$host = $url['host'];
$path = isset($url['path'])? $url['path'] : "/";
$port = isset($url['port'])? $url['port'] : 80;
if(isset($url['query'])) $path .= '?' . $url['query'];
$n=round($size/$stek);
if($size%$stek>0) $n+=1;
$ct="";
FOR($ran=0; $ran<$n; $ran++)
{
echo " Part ".($ran+1)."\n"; $ot=($ran*$stek); $do=($ran*$stek+$stek);
if(($ran+1)==$n) $do=$size; if($ot!=0) $ot+=1;
if(!($f = fsockopen($host, $port, $ern, $ers))) { echo "--Ошибка создания сеанса!\n"; break; }
else {
fputs($f, "GET $path HTTP/1.0\r\nHOST: $host\r\n".$handll."\r\n\r\n"); $cts="";
for($reply = true; !feof($f); )
{
$line = fgets($f);
if($reply==false) $cts .= $line;
if($line == "\r\n") $reply=false;
}
fclose($f);
}
$ct.=$cts;
if(($ran+2)==$n) break;
}
if(strlen($ct)==$size) return $ct; else { echo "\n--SIZE| ".strlen($ct)."/".$size."\n"; return false; }
}
function get_parameter($url)
{
$out[name]=basename($url);
$url = parse_url($url);
$host = $url['host'];
$path = isset($url['path'])? $url['path'] : "/";
$port = isset($url['port'])? $url['port'] : 80;
if(isset($url['query'])) $path .= '?' . $url['query'];
if(!($f = fsockopen($host, $port, $ern, $ers))) return false;
else {
fputs($f, "GET $path HTTP/1.0\r\nHOST: $host\r\n".$handll."\r\n\r\n"); $x=0;
for($reply = true; !feof($f); )
{
$line = fgets($f);
if($reply==true) $reply .= $line;
if($line == "\r\n") break;
}
fclose($f);
if(eregi("Accept-Ranges: bytes",$reply)) $out[range]=true; else $out[range]=false;
if(preg_match("|Content-Length: ([0-9]+)+|iS",$reply,$o)) $out[size]=$o[1]; else $out[size]=0;
return $out;
}
}
?>
|
| |
|
|
|
|