PHP的Snoopy.class.php

使用PHP读取HTTP页面基本使用Snoopy,使用简单方便易用。

最近在使用过程中发现一些问题,读取某些服务器的时候会发现获取不到页面内容。

留意Snoopy的Header请求头的时候发现,对于HOST请求是类似
HOST: hostname:port
看代码,只要端口存在,就使用该方式发送请求。

但观察浏览器请求时发现如果端口为80的时候,会省略掉端口号。

按这个方式改造一下Snoopy的代码,加入判断端口号,如果端口号为80的情况下,则直接使用
HOST: hostname
否则使用
HOST: hostname:port

这样改写代码后上面的问题就解决了。

问题的原因不太清楚,呵呵,对于HTTP协议始终就是模棱两可一知半解,实用至上主义,问题解决就不管了。

另外,还有一个问题就是,自官方下载到的Snoopy.class.php的编码问题,这个文件使用的是“阿拉伯语(Windows)”进行编码的,至少在这个编码下查看没有乱码。
为了方便日后改写代码,我是利用阿拉伯语(Windows)打开,然后Copy无乱码的代码另存为UTF-8编码,方便日后更改处理。

HTTP协议的那些事儿

什么是http连接?一张页面加载过程中,又是图片又是样式、脚本,对于这些东西的请求,是共用一个连接还是多个连接?
网上有人说,为了节省连接数,应该尽量将外部CSS,js合并,或者内联;甚至图片也合成一张,再用CSS定位。显然,在这里,一个请求就用一个连接,请求完成连接即被关掉。
但IIS里,有选项“保持HTTP连接”,且有超时时间可供设置。如果每请求一样东西,就开启一个连接,并且这个连接迟迟不死,保持激活,那么要多少连接才够用?这里的意思,应该是一个连接可以供多次使用。

更多 »

Deepseath Modified from Green Hope Theme · Proudly powered by WordPress · 津ICP备09005418号  津公网安备 12010302001005号