【问题标题】:php get_headers is very slow (takes infinite!) when it requests the URI of current pagephp get_headers 在请求当前页面的 URI 时非常慢(需要无限!)
【发布时间】:2011-06-16 01:33:33
【问题描述】:

为什么这需要无限的时间?

function getCurrentPageUrl() {
 $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;
}    

$headers = get_headers(getCurrentPageUrl());

【问题讨论】:

  • $pageURL 中返回了什么?
  • 您的系统配置是否允许服务器与自己对话?有些防火墙不会,如果它默默地把数据包丢在地上,你的脚本会一直等到超时,或者永远。
  • @Neal 当前 php url 页面。该功能对它没有问题。问题在于 get_headers
  • @Marc B 哦,你认为这是 Windows 防火墙,那我该怎么办?
  • 你确定吗?仔细检查 get_headers(...) 中的内容

标签: php iis header


【解决方案1】:

这是一个递归请求。问题是您正在请求加载此脚本,而正在加载的脚本正试图在其自身中加载它等等:)

【讨论】:

  • 哦,真的 :) 好吧,我试图在 Apache stackoverflow.com/questions/6359352/… 上找到一个替代品,这在 IIS 上不起作用。
  • 我最终想要的只是获取用户代理!
  • 你可以从$_SERVER['HTTP_USER_AGENT']得到它
  • @Karolis:那是请求脚本的人的用户代理。我认为 OP 想要 PHP 将自己标识为的用户代理。
  • @Marc B,我不这么认为,因为 PHP 的用户代理身份是开发人员已知且完全可控的东西。为什么他需要得到他知道的东西? :)
猜你喜欢
  • 1970-01-01
  • 2014-03-20
  • 1970-01-01
  • 1970-01-01
  • 2020-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-14
相关资源
最近更新 更多