1

我正在尝试从 Twitter 的短 URL 中解析长 URL,我的功能是,

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

还有其他建议或更快的方法来解决短网址吗?

4

1 回答 1

2

好吧,首先看看Tweet EntitiesThe media entity中的部分(您可以使用扩展的 url 获取),如果它有帮助的话。此外,默认情况下get_headers使用(比 HEAD 慢)请求来获取标头。如果你想发送一个 HEAD 请求,你可以使用流上下文:GET

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),它可能非常有帮助,标题描述清楚,我认为这是正是您正在寻找的。

于 2013-07-13T07:11:07.103 回答