广

PHP编程

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    同域名多IP下PHP获取远程网页内容的函数

    2018-04-03 21:30:51 次阅读 稿源:互联网
    零七广告

      烈火建站学院(LieHuo.Net)PHP教程 PHP获取远程网页内容有多种方式,例如用自带的file_get_contents、fopen等函数。

    <?php
    echo file_get_contents("http://www.veryhuo.com/abc.php");
    ?>

      但是,在DNS轮询等负载均衡中,同一域名,可能对应多台服务器,多个IP。假设blog.kcoffee.net被DNS解析到72.249.146.213、72.249.146.214、72.249.146.215三个IP,用户每次访问blog.kcoffee.net,系统会根据负载均衡的相应算法访问其中的一台服务器。

      上周做一个视频项目时,就碰到这样一类需求:需要依次访问每台服务器上的一个PHP接口程序(假设为abc.php),查询这台服务器的传输状态。

      这时就不能直接用file_get_contents访问blog.kcoffee.net/abc.php了,因为它可能一直重复访问某一台服务器。

      而采用依次访问http://72.249.146.213/abc.php、http://72.249.146.214/abc.php、http://72.249.146.215/abc.php的方法,在这三台服务器上的Web Server配有多个虚拟主机时,也是不行的。

      通过设置本地hosts也不行,因为hosts不能设置多个IP对应同一个域名。

      那就只有通过PHP和HTTP协议来实现:访问abc.php时,在header头中加上blog.kcoffee.net域名。于是,我写了下面这个PHP函数。

    以下为引用的内容:
    <?php
    /************************
    * 函数用途:同一域名对应多个IP时,获取指定服务器的远程网页内容
    * 创建时间:2008-12-09
    * 创建人:张宴(blog.s135.com)
    * 参数说明:
    * $ip 服务器的IP地址
    * $host 服务器的host名称
    * $url 服务器的URL地址(不含域名)
    * 返回值:
    * 获取到的远程网页内容
    * false 访问远程网页失败
    ************************/
    function HttpVisit($ip, $host, $url)
    {
    $errstr = '';
    $errno = '';
    $fp = fsockopen ($ip, 80, $errno, $errstr, 90);
    if (!$fp)
    {
    return false;
    }
    else
    {
    $out = "GET {$url} HTTP/1.1/r/n";
    $out .= "Host:{$host}/r/n";
    $out .= "Connection: close/r/n/r/n";
    fputs ($fp, $out);

    while($line = fread($fp, 4096)){
    $response .= $line;
    }
    fclose( $fp );

    //去掉Header头信息
    $pos = strpos($response, "/r/n/r/n");
    $response = substr($response, $pos + 4);

    return $response;
    }
    }

    //调用方法:
    $server_info1 = HttpVisit("72.249.146.213", "blog.s135.com", "/abc.php");
    $server_info2 = HttpVisit("72.249.146.214", "blog.s135.com", "/abc.php");
    $server_info3 = HttpVisit("72.249.146.215", "blog.s135.com", "/abc.php");
    ?>

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七广告
    零七广告
    零七广告
    零七广告