PHP CURL实现远程下载文件到本地

 
更多

PHP CURL实现远程下载文件到本地,该函数返回结果包括下载耗用的时间,保存的文件名,以及使用的下载方式。写的比较粗糙,如果大家有好的建议及改进方案,欢迎留言给我哦!

具体代码如下:

<?php

//$result=httpcopy('http://www.phpernote.com/image/logo.gif');

echo '<pre>';print_r($result);

function httpcopy($url,$file='',$timeout=60){
    $file=empty($file)?pathinfo($url,PATHINFO_BASENAME):$file;
    $dir=pathinfo($file,PATHINFO_DIRNAME);
    !is_dir($dir)&&@mkdir($dir,0755,true);
    $url=str_replace(' ',"%20",$url);
	$result=array('fileName'=>'','way'=>'','size'=>0,'spendTime'=>0);
	$startTime=explode(' ',microtime());
	$startTime=(float)$startTime[0]+(float)$startTime[1];
    if(function_exists('curl_init')){
        $ch=curl_init();
        curl_setopt($ch,CURLOPT_URL,$url);
        curl_setopt($ch,CURLOPT_TIMEOUT,$timeout);
        curl_setopt($ch,CURLOPT_RETURNTRANSFER,TRUE);
        $temp=curl_exec($ch);
        if(@file_put_contents($file,$temp)&&!curl_error($ch)){
			$result['fileName']=$file;
			$result['way']='curl';
			$result['size']=sprintf('%.3f',strlen($temp)/1024);
        }
    }else{
        $opts=array(
            'http'=>array(
            'method'=>'GET',
            'header'=>'',
            'timeout'=>$timeout
			)
        );
        $context=stream_context_create($opts);
        if(@copy($url,$file,$context)){
            $result['fileName']=$file;
			$result['way']='copy';
			$result['size']=sprintf('%.3f',strlen($context)/1024);
        }
    }
	$endTime=explode(' ',microtime());
	$endTime=(float)$endTime[0]+(float)$endTime[1];
	$result['spendTime']=round($endTime-$startTime)*1000;//单位:毫秒
	return $result;
}
打赏

本文固定链接: https://www.cxy163.net/archives/3681 | 绝缘体

该日志由 绝缘体.. 于 2015年04月29日 发表在 go, PHP, 编程语言 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: PHP CURL实现远程下载文件到本地 | 绝缘体
关键字: , , , ,

PHP CURL实现远程下载文件到本地:等您坐沙发呢!

发表评论


快捷键:Ctrl+Enter