DNS轮询 PHP获取远程网页内容的函数
来源:互联网 发布:淘宝友情链接怎么设置 编辑:程序博客网 时间:2024/04/30 09:41
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");
?>
- DNS轮询 PHP获取远程网页内容的函数
- DNS轮询 PHP获取远程网页内容的函数
- PHP远程获取网页内容
- 同一域名对应多个IP时,PHP获取远程网页内容的函数[原创]
- 同一域名对应多个IP时,PHP获取远程网页内容的函数
- [PHP代码] PHP远程获取网页内容
- 分享几段获取远程网页内容的php代码。
- php获取远程文件内容与大小的函数代码
- 获取远程网页内容
- php获取网页内容
- php获取网页内容
- php获取网页内容
- 【php】获取网页内容
- PHP获取网页内容
- php 获取网页内容
- c#远程获取网页内容
- c#远程获取网页内容
- c#远程获取网页内容
- 设置 eduvip route 脚本
- _MSC_VER ????什么意思。。
- WinCE 应用程序开机自动运行的又一种方法[zz]
- 11111111
- iFIX 系统配置指南
- DNS轮询 PHP获取远程网页内容的函数
- 22222222
- 关于级联删除和级联修改
- IFIX VBA的几个小窍门
- nutch 中添加中文分词 修改代码法 使用插件法
- 关于doPost或doGet调用出错
- 随想
- Resources cannot be null
- Webshpere process server 教程 wps入门系列 Assign[指定]任务介绍