【问题标题】:Getting multiple http response codes using cURL?使用 cURL 获取多个 http 响应代码?
【发布时间】:2011-08-13 09:00:22
【问题描述】:

请看一下这个示例代码:

function http_response($url)
{
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_HEADER, TRUE);
        curl_setopt($ch, CURLOPT_NOBODY, TRUE); // remove body
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        $head = curl_exec($ch);
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

        echo $httpCode ;
}

此代码将打印给定 url 的 httpCode。我有几个问题:

  1. 我可以在这里去掉一些 setopt() 行并仍然获得 httpCode 吗?
  2. 如果我想同时检查多个网址怎么办?我可以修改代码来做到这一点吗?
  3. 我能否使用不同于 cURL 的库以更简单的方式实现相同的功能?

谢谢:)

【问题讨论】:

    标签: php curl http-response-codes


    【解决方案1】:
    • 您应该能够删除CURLOPT_HEADERCURLOPT_NOBODY 并且仍然得到相同的结果。
    • 你可以这样做:

      $urls = array(
          'http://google.com',
          'http://facebook.com'
      );
      
      $status = array();
      
      foreach($urls as $url){
          $status[$url] = http_response($url);
      }
      

      在此之后尝试print_r($status);,您会看到结果。

    • 您可以使用 file_get_contents$http_response_header 进行此操作,以了解更多信息:http://www.php.net/manual/en/reserved.variables.httpresponseheader.php 不过我还是建议使用 cURL。

    【讨论】:

    • 谢谢罗斯。关于第二点,我想完成并行检查多个 url 以节省时间。我认为循环方法在这里不好,因为它会一个接一个地处理 url。有什么想法吗?
    • 您可以生成多个进程并让它们并行运行。
    • 看看php.net/manual/en/function.popen.php,你实际上不会节省那么多时间,但值得一试。
    【解决方案2】:

    *2。要检查多个 url,您必须在任何编程语言中循环使用此函数 来自服务器的 1 个响应 = 1 个与该服务器的连接。如果您想使用 1 个函数从多个服务器获取响应,您始终可以将数组传递给函数并在函数内部执行循环

    *3。你可以试试这个方法:

    function get_contents() {
      file_get_contents("http://example.com");
      var_dump($http_response_header);
    }
    
    
    get_contents();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-01
      • 1970-01-01
      • 2012-08-01
      • 2018-02-27
      • 1970-01-01
      • 2011-09-24
      相关资源
      最近更新 更多