guzzlehttp/guzzle 配合 symfony/console 命令行中实现文件下载进度条
码农天地 -guzzlehttp/guzzle 配合 symfony/console 命令行中实现文件下载进度条安装
guzzlehttp/guzzle
、symfony/console
$ composer require guzzlehttp/guzzle
$ composer require symfony/console
代码示例#!/usr/bin/env php
<?php
require __DIR__.'/vendor/autoload.php';
use GuzzleHttp\Client;
use Symfony\Component\Console\Helper\ProgressBar;
use Symfony\Component\Console\Output\ConsoleOutput;
$fileDownloadUrl = 'http://ws.stream.qqmusic.qq.com/M8000004q1zZ43bMMs.mp3?guid=749170908&vkey=B5BC4501101100E9E4A10A83EEF1DD8FD27E6BD4F6C47C05964182534A9408A822A4E043B158E6D1E16B60336C746F048D5E239713A3A803&uin=0&fromtag=66%';
$saveFilePath = '/Users/yaozm/Downloads/熱河 - 不只是南方.mp3';
$isDownloaded = false;
$output = new ConsoleOutput();
$progressBar = null;
$client = new Client([
'sink' => $saveFilePath,
'progress' => function ($totalDownload, $downloaded) use ($output, &$progressBar, &$isDownloaded){
if ($totalDownload > 0 && $downloaded > 0 && null === $progressBar) {
$progressBar = new ProgressBar($output, $totalDownload);
$progressBar->setFormat('very_verbose');
$progressBar->start();
}
if (!$isDownloaded && $progressBar && $totalDownload === $downloaded) {
$progressBar->finish();
$output->writeln(PHP_EOL);
return $isDownloaded = true;
}
if ($progressBar) {
$progressBar->setProgress($downloaded);
}
},
]);
$client->get($fileDownloadUrl);
$output->writeln('Download completed');
相关链接https://github.com/symfony/consolehttps://github.com/guzzle/guzzlehttps://github.com/guanguans/music-php原文链接https://github.com/guanguans/guanguans.github.io 特别申明:本文内容来源网络,版权归原作者所有,如有侵权请立即与我们联系(cy198701067573@163.com),我们将及时处理。
php介绍
PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。