使用PHP获取重定向URL的最快方法

时间:2012-07-25 07:08:33

标签: php url redirect curl

如何尽快获得真正的网址?我需要在一个脚本中检查大量的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;
}

似乎运行得更快。还有其他更快的方法吗?

3 个答案:

答案 0 :(得分:1)

您可以使用CURL" multi"功能,允许您同时发出多个请求,而无需自己管理多个进程。

PHP documentation for curl_multi_init()有一些基本的例子。 另一个教程是here

此外,如果PHP的最长执行时间是阻止你的唯一因素,并且如果花费的时间超过30秒,你就不会实际关心你可以随时拨打{{3在循环的每次迭代中。

答案 1 :(得分:1)

$_SERVER['HTTP_REFERER']包含重定向到当前网址的上一个网址。

答案 2 :(得分:0)

here

尝试这样的事情
<?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;
}
?>