% Всего% полученных% Xferd Средняя скорость Время Время Текущий
Dload Upload Всего отработанных левых скоростей
100 12,4M 100 12,4M 0 0 4489k 0 0:00:02 0:00:02 -: -: - 4653k
Выше приведен вывод CURL из командной строки при загрузке файла. Я сделал это с помощью PHP, но у меня возникли проблемы с тем, как использовать pre_match для извлечения процента выполненных действий.
$handle = popen('curl -o '.VIDEOPATH.$fileName.'.flv '.$url, 'rb');
while(!feof($handle))
{
$progress = fread($handle, 8192);
//I don't even know what I was attempting here
$pattern = '/(?<Total>[0-9]{1,3}\.[0-9]{1,2})% of (?<Total>.+) at/';
//divide received by total somehow, then times 100
if(preg_match_all($pattern, $progress, $matches)){
fwrite($fh, $matches[0][0]."\r\n");
}
}
Как я могу это сделать? Пожалуйста, обратите внимание, я понятия не имею, что я делаю с вышеупомянутым preg_match_all!
Спасибо
Обновление
Благодаря помощи Ylebre. У меня есть это до сих пор.
$handle = popen('curl -o '.VIDEOPATH.$fileName.'.flv '.$url.' 2>&1', 'rb');//make sure its saved to videos
while(!feof($handle))
{
$line = fgets($handle, 4096); // Get a line from the input handle
echo '<br>Line'.$line.'<br>';
$line = preg_replace("/s+/", " ", $line); // replace the double spaces with one
$fields = explode(" ", $line); // split the input on spaces into fields array
echo '<br>Fields: '.$fields[0];
fwrite($fh, $fields[0]); // write a part of the fields array to the output file
}
Я получаю этот вывод в браузер:
Линия% Всего% Получено% Xferd Средняя скорость Время Время Время Текущий
Поля:
Загрузка линейной нагрузки Всего отработанных левых скоростей
Поля:
Линия 0 1340k 0 4014 0 0 27342 0 0:00:50 -: -: - 0:00:50 27342 41 1340k 41 552k 0 0 849k 0 0:00:01 -: -: - 0 : 00: 01 1088k 100 1340k 100 1340k 0 0 1445k 0 -: -: - -: -: - -: -: - 1711k
Поля:
Линия
Как извлечь только процентную часть? Может быть, CURL сможет сделать это сам - хм, задам вопрос по этому поводу.