我正在尝试从Twitter的短网址解析长网址,我的功能是,
public function expand_short_url($url = '')
{
if($url != '')
{
$headers = get_headers($url);
$headers = array_reverse($headers);
foreach($headers as $header) {
if (strpos($header, 'Location: ') === 0) {
$url = str_replace('Location: ', '', $header);
break;
}
}
}
return $url;
}
此功能对性能产生巨大影响。我对JSON响应进行了基准测试,
Without resolving : 1.73 seconds
With URL resolving : 1.2 min
还有其他建议,还是更快捷的方法来解决短网址?
答案 0 :(得分:2)
好吧,首先看看Tweet Entities中的The media entity
部分(如果有帮助的话,你可以获得扩展的网址)。此外,默认情况下get_headers使用GET
(比HEAD慢)请求来获取标头。如果您想要发送HEAD请求,可以使用流上下文:
stream_context_set_default(
array(
'http' => array(
'method' => 'HEAD'
)
)
);
$headers = get_headers('http://example.com');
Curl更快,但我建议您阅读Resolve Short URLs To Their Destination URL with PHP (such as T.co, bit.ly & tinyurl.com),它可能会非常有用,标题会清楚地描述它,我认为这正是您所寻找的。 p>