同一域名对应多个IP时,PHP获取远程网页内容的函数
同一域名对应多个IP时,PHP获取远程网页内容的函数 [文章作者:张宴 本文版本:v1.0 最后修改:2008.12.15 转载请注明原文链接:http://blog.zyan.cc/post/389/]PHP获取远程网页内容有多种方式,例如用自带的file_get_contents、fopen等函数。
引用
<?php
echo file_get_contents("http://blog.zyan.cc/abc.php");
?>但是,在DNS轮询等负载均衡中,同一域名,可能对应多台服务器,多个IP。假设blog.zyan.cc被DNS解析到72.249.146.213、72.249.146.214、72.249.146.215三个IP,用户每次访问blog.zyan.cc,系统会根据负载均衡的相应算法访问其中的一台服务器。上周做一个视频项目时,就碰到这样一类需求:需要依次访问每台服务器上的一个PHP接口程序(假设为abc.php),查询这台服务器的传输状态。这时就不能直接用file_get_contents访问http://blog.zyan.cc/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.zyan.cc域名。于是,我写了下面这个PHP函数:
view plainprint?
<?php
/************************
* 函数用途:同一域名对应多个IP时,获取指定服务器的远程网页内容
* 创建时间:2008-12-09
* 创建人:张宴(blog.zyan.cc)
* 参数说明:
* $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.zyan.cc", "/abc.php");
$server_info2 = HttpVisit("72.249.146.214", "blog.zyan.cc", "/abc.php");
$server_info3 = HttpVisit("72.249.146.215", "blog.zyan.cc", "/abc.php");
?>
转载于:https://www.cnblogs.com/L-H-R-X-hehe/p/3970622.html
同一域名对应多个IP时,PHP获取远程网页内容的函数相关推荐
- 多活主备选择性DNS解析(一个域名对应多个IP)
多活主备选择性DNS 问题背景 知识背景 DNS解析存在多级缓存(此处仅列举到DNS服务器层:后续流程不涉及) DNS一对多域名的解析随机性 DNS 域名解析负载均衡缺点: 可能方案 方案一.dns解 ...
- java将域名解析为IP地址,获取网卡的配置信息
DNS域名解析系统 系统简介:用户通过输入需要查询的域名,便可输出域名对应的一个IP地址或多个IP地址. 系统功能:1.通过输入域名可以查询域名所对应的IP地址. 2.可以获取当地的主机IP地址和本地 ...
- 实现一个域名对应多个IP地址和DNS优缺点详解!
实现一个域名对应多个IP地址和DNS优缺点详解! 1.DNS定义: DNS(Domain Name System)是因特网的一项服务,它作为域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访 ...
- 虚拟Web主机(基于域名配置,基于ip地址,基于端口)
文章目录 虚拟Web主机 httpd支持的虚拟主机类型 基于域名的虚拟主机 基于IP地址的虚拟主机 基于端口的蓄力主机 基于域名的虚拟主机 修改DNS主配置文件 设置区域配置文件 添加区域数据配置文件 ...
- linux怎样ping域名看不到ip,在linux下,ping域名ping不了,ping ip却可以解决办法
ping域名: [root@zyy ~]# ping www.baidu.com ping: unknown host www.baidu.com ping ip时: [root@zyy ~]# pi ...
- 服务器怎么解绑网站域名,服务器解绑ip
服务器解绑ip 内容精选 换一换 通过将弹性公网IP与弹性网卡绑定,您可以构建更灵活,扩展性更强的IT解决方案.弹性网卡本身提供一个私网IP,与弹性公网IP绑定后,相当于同时具备了私网IP和公网IP. ...
- Centos7.6下构建虚拟主机实验(基于域名、端口及IP地址)
文章目录 一.构建虚拟主机概述 二.实验环境及详细步骤 2.1 基于域名 2.2 基于端口 2.3 基于IP 一.构建虚拟主机概述 虚拟Web主机 在同一台服务器中运行多个Web站点,其中每一个站点并 ...
- 计算机名和DNS域名的关系,域名、DNS、IP地址的对应关系
什么是域名?什么是IP地址? 域名(英语:Domain Name),简称域名.网域,是由一串用点分隔的名字组成的上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置) ...
- 虚拟主机的构建——基于域名、端口、IP
构建虚拟主机 1.虚拟主机介绍 企业常用的虚拟主机分为3种: (1)基于域名 (2)基于端口 (3)基于IP 虚拟web主机 在同一台物理服务器中运行多个web站点,其中每一个站点并不独立占用一台真正 ...
最新文章
- js 变量提升 和函数提升
- 1079 Total Sales of Supply Chain
- Python 数据结构_队列
- 很好的linux启动说明( bootsect.S、setup.S、head.S)
- Post Content_Length exceeds the limit
- knowladge_网站开发_jQuery插件_Clock Demo
- 【图像处理】——opencv常用函数
- 中国股市暴涨暴跌全记录
- django 1.8 官方文档翻译: 8-3 点击劫持保护
- 从源码安装mysql_从源代码安装mysql
- 洛谷P1461 海明码 Hamming Codes
- 2021年“泰迪杯”数据分析技能赛A题任务1:数据分析与预测
- 浏览器快捷键大全、常用快捷键整理
- 笔记本电脑插网线显示未识别的网络_笔记本插入网线,显示未识别网络
- GBA火焰纹章改版-智慧的结晶
- 用友ERP-NC用户常见的问题
- html同时播放多个文件夹,怎么把很多文件一起同时放入一个文件夹内
- Java 后端开发实践 - 项目模板(16 步)
- kubectl使用参数--kubeconfig指定不同 .kube/config 文件访问以不同集群
- Win10启动 蓝屏 0xc000021a解决方法(不重装系统)