WapStyle » 2010.11.16 18:30

Блин тема вот такая:

Код:

1
exec('wget http://domen.ru/file.zip');

Теперь вопрос: Как выводить на страничку процент закачивания файла?

Нвпример: "Файл скачан на 20%" обновляем страничку "Файл скачан на 50%" и т.д.

В гугле пусто или хлам.

Gemorroj » 2010.11.16 18:49

нужен js. у курла есть вроде встроенные плюшки по этому поводу

WapStyle » 2010.11.16 18:50

На счёт курла можно поподробнее

Gemorroj » 2010.11.16 19:18

http://php.net/curl_setopt CURLOPT_PROGRESSFUNCTION

2010 » 2010.12.21 20:37

Я рекомендую написать на яваскрипте методом асинхроного запроса. Там можно проверять статус отправки запроса:
- отправляется
- идет обмен
- отправлен
и что-то подобное, там статус от 1 до 4. Вот там при определенный статусах можешь и сделать процент загрузки. Я уже делал такое, но только когда писал скрипт загрузки станицы (40, 60, 80, 100%) всё работало :)
Даже можно написать подъем от 0 до 100 процентов, а не по кускам 40, 60, 80 100%. Я многое мутил через яваскрипт а также аякс. И по этому советую эту технологию) классная вещь.

ByVlad » 2010.12.26 19:25

Бред вы несете ребята.
Функция для получения размера файла по URL:
function getSizeFile($url) {
        $x = array_change_key_case(get_headers($url, 1), CASE_LOWER);
        return (strcasecmp($x[0], 'HTTP/1.1 200 OK') != 0) ? $x['content-length'][1] : $x['content-length'];
}
Потом
$query['size'] = getSizeFile('http://test1.ru/file.rar');
$percent = $query['size']/100;
$file = explode('/', $query['url']);
$file = 'files/' . end($file);
echo round((filesize($file)/$percent), 2) . '%';
====
Надеюсь доступно объяснил.

Gemorroj » 2010.12.26 20:34

ByVlad, никто не спрашивал как получить размер файла, спрашивали как сделать прогрессбар)

WapStyle » 2010.12.27 00:01

Получение размера очень просто - зоголовки

ByVlad » 2010.12.27 00:15

Gemorroj написал:

ByVlad, никто не спрашивал как получить размер файла, спрашивали как сделать прогрессбар)

Так он должен обновлятся онлайн?
Или как, ничего не пойму.

Gemorroj » 2010.12.27 00:45

ByVlad, да, онлайн. Основная задача - синхронизировать процент закачки и отображаемые пользователю данные. Т.е. как JS скрипт узнает что файл скачан на 50%? асинхронные запросы к серверу через энные промежутки времени?

TLENS » 2011.01.02 13:03

WapStyle написал:

Блин тема вот такая:

Код:

1
exec('wget http://domen.ru/file.zip');

Теперь вопрос: Как выводить на страничку процент закачивания файла?

Нвпример: "Файл скачан на 20%" обновляем страничку "Файл скачан на 50%" и т.д.

В гугле пусто или хлам.

Вот такой код писал себе для парсера:

Код:

1
lt;? $_SET['url_script']='http://files.example.ua/'; $_SET['dir_parser']='../files'; $header=implode('|',get_headers($url)); $size=(int)preg_replace('/.*?Content-Length:\s([0-9]+?)\|.*/si','$1',$header); if(file_exists($_SET['dir_parser'].'/'.$name)) { $filesize=filesize($_SET['dir_parser'].'/'.$name); if($size>$filesize) { echo('<b>Файл готовится к скачиванию</b><br /><b>Размер:</b> '.round($size/1024/1024,2).'Mb<br />Обработано: '.round($filesize*100/$size,2).'%<br />'); echo('<a href=""><img src="http://example.ua/images/img/circle.gif" alt="" /> Обновить</a><br />'); echo('<meta http-equiv="refresh" content="3" />'); } else { echo('<b>Файл готов к скачиванию</b><br />'); require_once('includes/mpClass/mp3.class.php'); echo '<b>Файл: </b>'.$name.'<br />'; $mp3 = new mp3; if ($data = $mp3->get_mp3($_SET['dir_parser'].'/'.$name,false)) { if ($data['Data']) { echo'<b>Размер файла:</b> '.round($data['Data']['Filesize'] / 1024, 2).' Kb<br />'; echo'<b>MPEG версия:</b> '.$data['Data']['MPEGVer'].'<br />'; echo'<b>MPEG Layer:</b> '.$data['Data']['Layer'].'<br />'; echo'<b>Скорость потока:</b> '.$data['Data']['Bitrate'].' kbps<br />'; echo'<b>Частота:</b> '.$data['Data']['Sampling_frequency'].' Hz<br />'; echo'<b>Режим:</b> '.$data['Data']['Mode'].'<br />'; echo'<b>Длина:</b> '.$data['Data']['Time'].'<br />'; } } echo('<a href="http://files.example.ua/'.$name.'">Скачать</a><br />'); echo('<small>У вас есть 10сек. Чтобы начать скачку</small><br />'); } } else { $curl = curl_init('http://files.example.ua/get.php?url='.urlencode($url).'&name='.$name.'&pass=*********'); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_TIMEOUT, 1); curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 1); $f = curl_exec($curl); if(curl_error($curl) || substr_count($f,'OK')) { echo('<b>Файл готовится к скачиванию</b><br /><b>Размер:</b> '.round($size/1024/1024,2).'Mb<br />Обработано: 0%<br />'); echo('<a href=""><img src="http://example.ua/images/img/circle.gif" alt="" /> Обновить</a><br />'); echo('<meta http-equiv="refresh" content="3" />'); } else { echo 'Файл не найден'; } curl_close($curl); }
Gemorroj » 2011.01.02 14:24

TLENS, почитай получше про 2 параметр у get_headers...

TLENS » 2011.01.02 14:36

О действительно. Спасибо