2

どうすれば真の URL をできるだけ早く取得できますか? 1 つのスクリプトで多数の URL をチェックする必要があります (最大実行時間 - 30 秒)。

CURL ソリューションには時間がかかりすぎます。私はこのようなものを見つけました:

function get_URL($url)
{
    $headers = @get_headers($url);
    $pattern = '/Location\s*:\s*(https?:[^;\s\n\r]+)/i';
    if ($locations = preg_grep($pattern, $headers))
    {
        preg_match($pattern, end($locations), $redirect);
        return $redirect[1];
    }
    return $url;
}

これはより速く動作するようです。他のより速い方法はありますか?

4

3 に答える 3

1

$_SERVER['HTTP_REFERER']現在の URL にリダイレクトされた以前の URL が含まれます。

于 2013-03-11T17:37:50.060 に答える
1

CURL の「マルチ」機能を使用すると、複数のプロセスを自分で管理することなく、複数のリクエストを同時に行うことができます。

curl_multi_init()のPHP ドキュメントには、いくつかの基本的な例があります。別のチュートリアルはこちらから入手できます。

また、PHP の最大実行時間だけが問題であり、実際には 30 秒以上かかるかどうか気にしない場合は、ループの反復ごとにいつでもset_time_limit()を呼び出すことができます。

于 2012-07-25T07:22:39.830 に答える
0

ここから、このようなものを試してください:

<?php
function curPageURL() {
 $pageURL = 'http';
 if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
 $pageURL .= "://";
 if ($_SERVER["SERVER_PORT"] != "80") {
  $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
 } else {
  $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
 }
 return $pageURL;
}
?>
于 2012-07-25T07:11:57.527 に答える