【发布时间】:2012-07-23 13:41:39
【问题描述】:
我怎样才能尽快得到真正的网址?我需要在单个脚本中检查大量 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;
}
这似乎工作得更快。还有其他更快的方法吗?
【问题讨论】:
-
你能澄清一下吗? “获取真实URL”=在浏览器中获取当前页面的URL?你不能只使用 $_SERVER['PHP_SELF'] 或其中一个变量吗?
-
不使用多个进程不会比这更快
-
@Eric:我认为他的意思是检查 URL 是否重定向到任何地方,然后返回该 URL
-
这不会有太大的区别,但是您可以通过在函数外部定义模式(始终保持不变)来加速您的函数,这样您就不会每次都重新定义变量。与找到最快的函数(我无能为力)相比,这将产生最小的差异。
-
是的,我指的是重定向后的真实 URL。