【发布时间】:2017-05-23 14:05:45
【问题描述】:
下面的代码 sn-p 是使用 cURL 从重定向 URL 中获取最终 URL(包含 media/zip/rar 文件)。它得到最终的 URL,这是毫无疑问的,但它所做的是根据文件的大小,它会随着时间的推移而变化来获取 URL。
假设最终 URL 的文件为 1MB,检索大约需要 5 秒。但如果文件大约 35MB,则需要大约 150 秒的时间。我认为 cURL 正在下载结果并最终从结果中获取 URL。
<?php
echo get_rurl("x_url");//1.2MB -> 5-10sec
//echo get_rurl("y_url");//31.6MB -> 150sec
function get_rurl($url){
// initialize cURL
$curl = curl_init($url);
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
));
// execute the request
$result = curl_exec($curl);
// fail if the request was not successful
if ($result === false) {
curl_close($curl);
return null;
}
// extract the target url
$redirectUrl = curl_getinfo($curl, CURLINFO_EFFECTIVE_URL);
curl_close($curl);
return $redirectUrl;
}
?>
我不能使用file_get_content(),因为我只想从给定的重定向 URL 中获取最终 URL。
简而言之 - 如何在不下载结果的情况下从重定向 URL 获取最终 URL。
希望我说清楚。任何帮助将不胜感激。
【问题讨论】: