1

请看一下这个示例代码:

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 的库以更简单的方式执行相同的功能吗?

谢谢 :)

4

2 回答 2

1
  • 您应该能够删除CURLOPT_HEADER并且CURLOPT_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_contentsand来执行此操作$http_response_header,以了解更多信息:http : //www.php.net/manual/en/reserved.variables.httpresponseheader.php 不过我还是建议使用 cURL。

于 2011-04-26T21:55:23.487 回答
1

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

*3。你可以这样尝试:

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


get_contents();
于 2011-04-26T22:03:01.137 回答