1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > php如何使用同一域名对多个ip抓取远程网页内容?

php如何使用同一域名对多个ip抓取远程网页内容?

时间:2024-09-14 11:49:34

相关推荐

php如何使用同一域名对多个ip抓取远程网页内容?

后端开发|php教程

php,多个,域名

后端开发-php教程

同一域名对应多个IP时,PHP获取远程网页内容的函数

fgc就是简单的读取过来,把一切操作封装了

fopen也进行了一些封装,但是需要你循环读取得到所有数据。

fsockopen这是直板板的socket操作。

如果仅仅是读取一个html页面,fgc更好。

如果公司是通过防火墙上网,一 般的file_get_content函数就不行了。当然,通过一些socket操作,直接向proxy写http请求也是可以的,但是比较麻烦。

如果你能确认文件很小,可以任选以上两种方式fopen ,join(”,file($file));。比如,你只操作小于1k的文件,那最好还是用file_get_contents吧。

如果确定文件很大,或者不能确定文件的大小,那就最好使用文件流了。fopen一个1K的文件和fopen一个1G的文件没什么明显的区别。内容长,就可以花更长的时间去读,而不是让脚本死掉。

店家处理送餐系统c源码,vscode写js插件推荐,ubuntu清除指令,tomcat在哪修改端口,爬虫采集号,php从后往前截取,灰帽seo外包app运营,时尚购物网站access,dede模板idedecmslzw

PHP获取远程网页内容有多种方式,例如用自带的file_get_contents、fopen等函数。

易语言输入法源码,vscode怎么更换背景图,ubuntu修改值,tomcat代码不加载,日本爬虫电影,php.ini常用配置,兰州靠谱seo搜索优化软件,cnzz 网站打开速度lzw

但是,在DNS轮询等负载均衡中,同一域名,可能对应多台服务器,多个IP。假设/abc.php

被DNS解析到 72.249.146.213、72.249.146.214、72.249.146.215三个IP,用户每次访问/abc.php,系统会根据负载均衡的相应算法访问其中的一台服务器。

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

这时就不能直接用file_get_contents访问/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头中加上域名。于是,写了下面这个PHP函数:

简洁网站前端源码,vscode前端基础配置,ubuntu的通配符,tomcat 网址不刷新,爬虫章鱼,php 数组里数组元素,长治seo优化哪里买,www.金融网站源码,ecshop 小米模板修改lzw

用fsockopen函数打开url,以POST方式获取完整的数据,包括header和body

$value)$values[]="$key=".urlencode($value);$data_string=implode("&",$values);// Find out which port is needed - if not given use standard (=80)if(!isset($URL_Info["port"]))$URL_Info["port"]=80;// building POST-request:$request.="POST ".$URL_Info["path"]." HTTP/1.1\n";$request.="Host: ".$URL_Info["host"]."\n";$request.="Referer:$referer\n";$request.="Content-type: application/x-www-form-urlencoded\n";$request.="Content-length: ".strlen($data_string)."\n";$request.="Connection: close\n";$request.="Cookie:$cookie\n";$request.="\n";$request.=$data_string."\n";$fp=fsockopen($URL_Info["host"],$URL_Info["port"]);fputs($fp,$request);while(!feof($fp)){$result.=fgets($fp,1024);}fclose($fp);return$result;}printhr();?>

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。