最新公告
  • 欢迎您光临波比源码,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入我们
  • 同域名多IP下PHP获取远程网页内容的函数

      建站学院(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";  
            $out .= "Host:{$host}";     
            $out .= "Connection: close";  
            fputs ($fp, $out);     
     
            while($line = fread($fp, 4096)){  
               $response .= $line;  
            }  
            fclose( $fp );  
     
            //去掉Header头信息  
            $pos = strpos($response, "");  
            $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");  
    ?> 

    波比源码 – 精品源码模版分享 | www.bobi11.com
    1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
    2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
    3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
    4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
    5. 如有链接无法下载、失效或广告,请联系管理员处理!
    6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
    7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!

    波比源码 » 同域名多IP下PHP获取远程网页内容的函数

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    波比源码
    一个高级程序员模板开发平台
    升级波友尊享更多特权立即升级