怎么在php中利用多线程远程下载文件-创新互联
本篇文章为大家展示了怎么在php中利用多线程远程下载文件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
成都创新互联公司服务项目包括巩义网站建设、巩义网站制作、巩义网页制作以及巩义网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,巩义网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到巩义省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!php有什么用
php是一个嵌套的缩写名称,是英文超级文本预处理语言,它的语法混合了C、Java、Perl以及php自创新的语法,主要用来做网站开发,许多小型网站都用php开发,因为php是开源的,从而使得php经久不衰。
代码如下:
function remote($urls, $name = '', $path = '', $dir = './images/') {
if (!is_array($urls) or count($urls) == 0) {
return false;
}
dmkdir($dir);
$curl = $text = array();
foreach($urls as $k => $v) {
if (!empty($v) && preg_match("~^http~i", $v)) {
$nurl[$k] = trim(str_replace(' ', "%20", $v));
$curl[$k] = curl_init($nurl[$k]);
curl_setopt($curl[$k], CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4 );
curl_setopt($curl[$k], CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl[$k], CURLOPT_HEADER, 0);
curl_setopt($curl[$k], CURLOPT_CONNECTTIMEOUT, 20);
if(!isset($handle)){
$handle = curl_multi_init();
}
curl_multi_add_handle($handle, $curl[$k]);
}
continue ;
}
$active = null;
do{
$mrc = @curl_multi_exec($handle, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
while ($active && $mrc == CURLM_OK) {
if (curl_multi_select($handle) != -1) {
do {
$mrc = curl_multi_exec($handle, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
}
}
foreach ($curl as $k => $v) {
if (curl_error($curl[$k]) == "") {
if ($k == 0) {
$fname[$k] = strtolower($name . '.' . pathinfo($urls[$k], PATHINFO_EXTENSION));
} else {
$fname[$k] = strtolower($name . '_' . $k . '.' . pathinfo($urls[$k], PATHINFO_EXTENSION));
}
$text[$k] = (string) curl_multi_getcontent($curl[$k]);
$filedir[$k] = $dir.'/' . $fname[$k];
if (file_put_contents($filedir[$k], $text[$k])) {
$filepath[$k] = $path . $fname[$k];
}
}
curl_multi_remove_handle($handle, $curl[$k]);
curl_close($curl[$k]);
}
curl_multi_close($handle);
return $filepath;
}
上述内容就是怎么在php中利用多线程远程下载文件,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。
本文标题:怎么在php中利用多线程远程下载文件-创新互联
文章起源:http://ybzwz.com/article/ceeshs.html