#1 2010.11.16 18:30

WapStyle
Участник
Откуда: Ирбит
Зарегистрирован: 2008.03.26
Сообщений: 475
Карма: 3
Профиль Веб-сайт

EXEC(); and WGET

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

Код:

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

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

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

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

Неактивен

#2 2010.11.16 18:49

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: EXEC(); and WGET

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

Неактивен

#3 2010.11.16 18:50

WapStyle
Участник
Откуда: Ирбит
Зарегистрирован: 2008.03.26
Сообщений: 475
Карма: 3
Профиль Веб-сайт

Re: EXEC(); and WGET

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

Неактивен

#4 2010.11.16 19:18

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: EXEC(); and WGET

http://php.net/curl_setopt CURLOPT_PROGRESSFUNCTION

Неактивен

#5 2010.12.21 20:37

2010
Участник
Откуда: localhost
Зарегистрирован: 2010.02.20
Сообщений: 230
Карма: 1
Профиль

Re: EXEC(); and WGET

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

Неактивен

#6 2010.12.26 19:25

ByVlad
Участник
Откуда: Киев
Зарегистрирован: 2010.03.27
Сообщений: 82
Карма: 1
Профиль Веб-сайт

Re: EXEC(); and WGET

Бред вы несете ребята.
Функция для получения размера файла по 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) . '%';
====
Надеюсь доступно объяснил.

Неактивен

#7 2010.12.26 20:34

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: EXEC(); and WGET

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

Неактивен

#8 2010.12.27 00:01

WapStyle
Участник
Откуда: Ирбит
Зарегистрирован: 2008.03.26
Сообщений: 475
Карма: 3
Профиль Веб-сайт

Re: EXEC(); and WGET

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

Неактивен

#9 2010.12.27 00:15

ByVlad
Участник
Откуда: Киев
Зарегистрирован: 2010.03.27
Сообщений: 82
Карма: 1
Профиль Веб-сайт

Re: EXEC(); and WGET

Gemorroj написал:

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

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

Неактивен

#10 2010.12.27 00:45

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: EXEC(); and WGET

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

Неактивен

#11 2011.01.02 13:03

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: EXEC(); and WGET

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); }

Отредактировано TLENS (2011.01.02 13:13)

Неактивен

#12 2011.01.02 14:24

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: EXEC(); and WGET

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

Неактивен

#13 2011.01.02 14:36

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: EXEC(); and WGET

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

Неактивен

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.2
0.012 s