2

我怎样才能尽快获得真正的 URL?我需要在单个脚本中检查大量 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

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

curl_multi_init()的PHP 文档有一些基本示例。此处提供了另一个教程。

此外,如果 PHP 的最大执行时间是唯一阻止您的事情,并且您实际上并不关心它是否需要超过 30 秒,那么您始终可以在循环的每次迭代中调用set_time_limit()

于 2012-07-25T07:22:39.830 回答
1

$_SERVER['HTTP_REFERER']包含重定向到当前 URL 的先前 URL。

于 2013-03-11T17:37:50.060 回答
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 回答