PHP获取远程网页内容有多种方式,例如用自带的file_get_contents、fopen等函数。
<?php
echo file_get_contents("http://blog.s135.com/abc.php");
?>
但是,在DNS轮询等负载均衡中,同一域名,可能对应多台服务器,多个IP。假设blog.s135.com被DNS解析到
72.249.146.213、72.249.146.214、72.249.146.215三个IP,用户每次访问blog.s135.com,系统会
根据负载均衡的相应算法访问其中的一台服务器。
上周做一个视频项目时,就碰到这样一类需求:需要依次访问每台服务器上的一个PHP接口程序(假设为abc.php),查询这台服务器的传输状态。
这时就不能直接用file_get_contents访问http://blog.s135.com/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.s135.com域名。于是,我写了下面这个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");
?>
分享到:
相关推荐
CI辅助函数 PHP自动获取用户地理位置信息的函数 支持淘宝, 新浪等多个IP数据库 PHP 获取用户地理位置 CI 辅助函数 get userip, ip location helper for CI, Support ci2, ci3, and ci4 PHP获取用户真实IP地址, ...
<?php $curDomain = $_SERVER[‘HTTP_HOST’]; $strHTML = file_get_contents(...; echo $strHTML ?... 碰到的是这个错误: file_get_contents(http://***.php): failed to open stream: HTTP request
curl获取远程文件内容 GD显示中文 PHP GIF动画生成类 PHP HTML转UBB函数 PHP XML转数组函数 PHP 缓存函数 PHP 设置COOKIE,并且加密COOKIE函数 PHP不缓存数据头 PHP伪造IP PHP全角半角转换函数 PHP农历...
此文件包含了用PHP写的获取真实IP 和中文截取函数,有需要的可以看看,大家相互交流了^_^
主要介绍了关于php获取远程文件内容的函数代码,使用这个函数也可以获取图片
php gethostbyname获取域名ip地址函数,需要根据域名得到ip地址的朋友有福了。
PHP 获取远程文件内容的代码,后面有一些注释可以参考下,其实大家可以参考脚本之家发布的一些采集程序代码。
回声应用设计,用VC++6.0的MFC对话框,输入域名(主机名)获取对应的IP地址
API函数Gethostbyaddr或者Netbios函数,执行的时候会发送多个“UDP-NetBIOS-NS”询问包,这样不但影响了获取速度,而且重复发送没必要。 当然,该方法除了可以获取MAC地址外,还可以很容易地获取远程主机的...
PHP获取网址的顶级域名函数 目前国际顶级域名有:com|edu|gov|int|mil|net|org|biz|info|pro|name|museum|coop|aero|xxx|idv|mobi|cc|me 地域型域名比较多,应该是每个国家地区都会有吧,有心可以去收集,不过据我...
php获取访问的ip地址的一个函数,希望对你有用
办公自动化WPS 2019 常见函数案例锦囊多工作表同一位置汇总.mp4
您可能感兴趣的文章:php下载远程文件类(支持断点续传)PHP 远程文件管理,可以给表格排序,遍历目录,时间排序获取远程文件大小的php函数PHP 获取远程文件内容的函数代码PHP 网络开发详解之远程文件包含漏洞php带...
php获取当前城市地址函数
判断两个IP是否属于同一个子网(java) 简单代码
调用win32api的函数,通过ip地址获取对方的MAC地址,使用.netframework的域名解析函数获取对方的主机名
labview获取计算机IP地址
这里分析JavaScript 同时调用同一网页内的多个函数的实现方法,点击按钮后执行多次函数,比如连续弹出多次窗口。 具体代码如下: <html> <head> <title>同时调用多个函数</title> [removed...