如何尽快获得真正的网址?我需要在一个脚本中检查大量的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;
}
似乎运行得更快。还有其他更快的方法吗?
答案 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;
}
?>