最近在追剧《庆余年》,借用弹友的一句话,三元又三元,不仅要开通VIP,开通后还三元一集,感觉挻贵,偶然看到有网络资源可以下载,于是整了个PHP下片的代码。用PHP实现下载确实很简单,只是要想时实的显示下载进度,比较困难但感觉还是有些有趣,于是有了下面的代码。实现了PHP实现远程下载,并显示实时下载进度。废话就不多说,直接上代码。
<?php ignore_user_abort(); set_time_limit(0); $url = isset($argv[1])?$argv[1]:false; if(!$url){ echo 'Please input the file\'s URL.'; exit(0); } $header_array = get_headers($url, true); $total = $header_array['Content-Length']; $n = 0; $extension = pathinfo( parse_url( $url, PHP_URL_PATH ), PATHINFO_EXTENSION ); $file = fopen($url, "rb"); $newf = fopen('filename.'.$extension, "wb"); while(! feof($file)) { fwrite($newf, fread($file, 1024 * 8), 1024 * 8); //进度显示 $n += 1024*8; $progress =sprintf("%.2f", $n/$total); if($progress>=1){ $progress = 1; } printf('filename.'.$extension ." progress: [%-50s] %d%% Done\r", str_repeat('#',$progress*50), $progress*100); } fclose($newf); fclose($file);
将上述代码存为php文件,然后在cli模式下运行即可。上述代码只是实现了基本的下载功能,
最后想说,本程序不能用于下载《庆余年》哈,除非你有相关资源。当然,本人支持正版,请勿使用本代码做非法用途。