Мониторинг за wget на php

Сергей_D

Новичок
Здравствуйте.
Идея такая, есть скрипт с полем для ввода и кнопкой «загрузить».
Вставляем прямую ссылку на файл размером 200-300 МБ и нажимаем «загрузить».
Далее средствами AJAX отображать проценты загрузки.
Реализовать думаю на PHP, так как основной скрипт на этом языке (ну и знаю его немного).

Первое что приходит в голову, это передать ссылку на PHP скрипт, который запустит wget в фоне с выводом процентов в файл. Потом запрашивать AJAX'ом (каждые 5 сек. например) PHP скрипт который парсит тот файл куда выводит wget.
Есть еще какие-то решения моей задачи?
 

WMix

герр M:)ller
Партнер клуба
wget классная штука но есть лучше curl и еще прикольнее, он в пхп уже имплементирован
не читал но в первой строке пойска в google "curl php download progress"

https://gist.github.com/1030450

в замену ajax предложу websokets
 

Сергей_D

Новичок
Посмотрел. Тут тоже нужно прогресс писать в файл, а с него уже смотреть. Видимо другого решения нету. Wget лучше будет тем, что его можно запустить фоном, т.е. скрипт быстренько отработает. А когда через Curl, то придется ждать выполнение, если не прав, то поправьте, а то с Curl работал на уровне get page
 

WMix

герр M:)ller
Партнер клуба
у меня небыло подобных задач но curl в консоле можно тоже заставить показывать прогресс загрузки
 

Сергей_D

Новичок
Проблема не в этом :) Как потом эту загрузку выводить в браузер например каждые 5 сек.
 

WMix

герр M:)ller
Партнер клуба
упрости себе задачку,.... как записывать прогресс в базу данных?....
 

WMix

герр M:)ller
Партнер клуба
CURLOPT_PROGRESSFUNCTION The name of a callback function where the callback function takes three parameters. The first is the cURL resource, the second is a file-descriptor resource, and the third is length. Return the string containing the data.

curl-setopt

PHP:
function progress($clientp,$dltotal,$dlnow,$ultotal,$ulnow){
    echo "$clientp, $dltotal, $dlnow, $ultotal, $ulnow";
    return(0);
}
curl_setopt($ch,CURLOPT_NOPROGRESS,false);
curl_setopt($ch,CURLOPT_PROGRESSFUNCTION,'progress');
 

Сергей_D

Новичок
Наверное придется делать как описал в первом посте. Ну если есть другие варианты пишите.
 
Сверху