【发布时间】:2015-05-01 15:07:44
【问题描述】:
您好,我在 Google 上搜索了几个小时来构建我自己的自定义 curl 函数:
输入就是一切(文件、图像、网页等的 URL...)
我有几种情况:
场景1
$url = 'an broken link or file';
$type = null; //not important
callCurl($url,$type,10,2);
我除了函数返回 false 因为if($curl = curl_init($url)) 但不起作用。(我用损坏的文件 url 测试它)
场景2
$url = 'an active url file';
$type = 'info'
callCurl($url,$type,10,2);
我只是返回文件的大小,但它首先下载文件然后给我它的大小!
场景3
$url = 'an active url webpage';
$type = 'content'
callCurl($url,$type,10,2);
我除了返回下载的网页它工作。没问题!
场景4
$url = 'an active url of file or images';
$type = 'content'
callCurl($url,$type,10,2);
如何下载文件或图像?和scenario3一样吗?
这是函数:
//$type: info | content
// info: for example size of file or webpages without downloading
// content: dpwnloaded content (file/webpage/image/etc...)
function callCurl($url,$type,$timeout,$ctimeout)
{
if($curl = curl_init($url))
{
curl_setopt( $curl, CURLOPT_NOBODY, true );
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_REFERER, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt( $curl, CURLOPT_FOLLOWLOCATION, true );//
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT ,$ctimeout);
curl_setopt($curl, CURLOPT_TIMEOUT, $timeout); //timeout in seconds
curl_setopt($curl, CURLOPT_SSLVERSION,3);
$str = curl_exec($curl);
if(curl_errno($curl))
{
echo curl_error($curl);
curl_close($curl);
return false;
}
else
{
if($type == 'info')
{
$info['mimeType'] = curl_getinfo($curl, CURLINFO_CONTENT_TYPE);
$info['size'] = curl_getinfo($curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
$info['path'] = parse_url($url, PHP_URL_PATH);
$info['filename'] = substr($info['path'], strrpos($info['path'], '/') + 1);
curl_close($curl);
return $info;
}
elseif($type == 'content')
{
return $str;
}
}
}
echo "This URL IS NOT ACTIVE IT IS NOT 200";
return false;
}
如何更改它以支持这些场景?
【问题讨论】:
-
你在使用任何类型的框架吗?
-
不...我用记事本++编码