Вы не зашли.
Главная » PHP » EXEC(); and WGET
#1. WapStyle Off (3)
Участник
2010.11.16 18:06
Блин тема вот такая:

Код:
exec('wget http://domen.ru/file.zip');
Теперь вопрос: Как выводить на страничку процент закачивания файла?

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

В гугле пусто или хлам.
#2. Gemorroj Off (107)
Administrator
2010.11.16 18:06
нужен js. у курла есть вроде встроенные плюшки по этому поводу
#3. WapStyle Off (3)
Участник
2010.11.16 18:06
На счёт курла можно поподробнее
#4. Gemorroj Off (107)
Administrator
2010.11.16 19:07
http://php.net/curl_setopt CURLOPT_PROGRESSFUNCTION
#5. 2010 Off (1)
Участник
2010.12.21 20:08
Я рекомендую написать на яваскрипте методом асинхроного запроса. Там можно проверять статус отправки запроса:
- отправляется
- идет обмен
- отправлен
и что-то подобное, там статус от 1 до 4. Вот там при определенный статусах можешь и сделать процент загрузки. Я уже делал такое, но только когда писал скрипт загрузки станицы (40, 60, 80, 100%) всё работало smile
Даже можно написать подъем от 0 до 100 процентов, а не по кускам 40, 60, 80 100%. Я многое мутил через яваскрипт а также аякс. И по этому советую эту технологию) классная вещь.
#6. ByVlad Off (1)
Участник
2010.12.26 19:07
Бред вы несете ребята.
Функция для получения размера файла по 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. Gemorroj Off (107)
Administrator
2010.12.26 20:08
ByVlad, никто не спрашивал как получить размер файла, спрашивали как сделать прогрессбар)
#8. WapStyle Off (3)
Участник
2010.12.27 00:12
Получение размера очень просто - зоголовки
#9. ByVlad Off (1)
Участник
2010.12.27 00:12
Gemorroj написал:
ByVlad, никто не спрашивал как получить размер файла, спрашивали как сделать прогрессбар)
Так он должен обновлятся онлайн?
Или как, ничего не пойму.
#10. Gemorroj Off (107)
Administrator
2010.12.27 00:12
ByVlad, да, онлайн. Основная задача - синхронизировать процент закачки и отображаемые пользователю данные. Т.е. как JS скрипт узнает что файл скачан на 50%? асинхронные запросы к серверу через энные промежутки времени?
#11. TLENS Off (14)
Moderator
2011.01.02 13:01
WapStyle написал:
Блин тема вот такая:

Код:
exec('wget http://domen.ru/file.zip');
Теперь вопрос: Как выводить на страничку процент закачивания файла?

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

В гугле пусто или хлам.
Вот такой код писал себе для парсера:

Код:
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:01)
#12. Gemorroj Off (107)
Administrator
2011.01.02 14:02
TLENS, почитай получше про 2 параметр у get_headers...
#13. TLENS Off (14)
Moderator
2011.01.02 14:02
О действительно. Спасибо
Страниц: 1 2 Все
Главная
WEB
PunBB Mod v0.6.2
0.016 s