请教:如何保持持久连接。

lovewangya 2009-11-22 10:03:32
现在是用curl采集一个站点。
例如有10个页面,域名是一样的只不过文件名不一样如下:
http://www.abc.com/1.php
http://www.abc.com/2.php
........................
http://www.abc.com/10.php



例如要在一次请求当中用for循环一次抓取这10个页面的内容,并处一些处理,但我考虑到速度问题

可不可以在第一次循环之后告诉abc.com的服务器我还要再请求2.php或者这个服务器的其它内容,不要断开链接。

这样能行吗?有办法没有啊?
...全文
111 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
海泪知己 2009-11-25
  • 打赏
  • 举报
回复
居上所诉
好像保持连接也没有什么用处?
楼主说说你的想法
海泪知己 2009-11-25
  • 打赏
  • 举报
回复
学习
lovewangya 2009-11-24
  • 打赏
  • 举报
回复
谢谢,不错。长见识了
sindel 2009-11-23
  • 打赏
  • 举报
回复
http 本身就是一来一回,不可能的事吧
xuzuning 2009-11-23
  • 打赏
  • 举报
回复
不行!
HTTP 是无状态协议
do_fork 2009-11-23
  • 打赏
  • 举报
回复
(Request-Line)	GET / HTTP/1.1
Host www.baidu.com
User-Agent Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset x-gbk,utf-8;q=0.7,*;q=0.7
Keep-Alive 300
Connection keep-alive
Cookie BAIDUID=D2724D19FEAE5E9AFB50D2FF62625E56:FG=1
Cache-Control max-age=0


这两行便是长连接的秘密所在,当然,服务器可以忽略掉它,不过一般是支持的。
Keep-Alive 300
Connection keep-alive


长连接,使得向相同web服务请求时,不用重复的建立和销毁连接,大大提高性能。
一般浏览一个页面时,也会请求css,jpeg,js等其它文件,而且总量还不小,
如果没有长连接,光建立销毁那么多次socket连接就要耗费不少时间,
特别是有连接数限制的浏览器。
do_fork 2009-11-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xuzuning 的回复:]
不行!
HTTP 是无状态协议
[/Quote]

跟HTTP的状态无关,长连接只是告诉服务器,本HTTP会话完成后,不要立即关闭socket,
而是等待一个给定的时间,如果超过这个时间仍然没有新的请求发送过去,那么就关闭socket,
在失效之前,可以再次进行新的HTTP会话,这个会话跟前一次的会话没有任何关联,
仅仅是复用了前一次的socket连接。
yybjroam05 2009-11-23
  • 打赏
  • 举报
回复
http 1.1好行有个keeplive哦!具体的我记不清了
do_fork 2009-11-22
  • 打赏
  • 举报
回复
这就是之前我提起过的那个"keepalive"

21,887

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧