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

他の提案、または短い URL を解決するためのより高速な方法はありますか?

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 (T.co、bit.ly、tinyurl.com など)を読むことをお勧めします。非常に役立つ可能性があります。タイトルはそれを明確に説明しており、これだと思いますまさにあなたが探しているものです。

于 2013-07-13T07:11:07.103 に答える