curl、fopen、file_get_contents 哪个效率最高 curl、fopen、file_get_contents 哪个效率最高?今天突然想到这么个问题3个都可以获取远程内容,可是哪个效率最高呢?有人测试过吗?该怎么测试才能准确呢?然后有没有效率更高的方法?谢谢了~大家讨论下~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 curl多用于互联网之间网页的抓取,fopen多用于读取文件,而file_get_contents多用于获取静态页面内容,file_get_contents的功能介于curl和fopen之间的功能,他们是针对于不同情况下运用的,在互联网之间的网页多用curl,而静态文件的读写等操作多用fopoen,file_get_contents的效率不高 嗯,谢谢楼上的~像一些蜘蛛程序,他们抓取页面用的是什么呢?就算是自己定义的方法也离不开最基本PHP函数才对吧。 to #4:其他的应该会更好,但我目的是想了解下在PHP环境中的方法、函数之类的to #5:keep-alive在服务器中可以设置,这个没问题的。像现在有个汉景搜索的程序,就是PHP的,当然他主要是在中文分词上面的应用,但也需要抓取页面 php 用curl、fopen来抓取等以上的都可以的,还有其他的 蜘蛛一般不会用PHP吧,C/C+靠谱些。其实可以直接写socket发HTTP的。 spider应该是用别的语言写的。php也可以。看怎么使用。 好象区别不大你主要是取得一个页的源码keep alive 是打开一个持续连接,这个在浏览器中有意义,因为要加载很多连接,而我们这里只取源码不需要更多请求。不知道这些函数在打开一个新页时是否还能仍用上个连接。至于搜索引擎。差别也不太,只不过搜索引擎请求时会智能判断,比如:无改变的就不请求实体。这些都是基于http协议理解。 如果是要模拟登录带验证码的网页 用CURL不错 之前写过一个登陆EMS的 spider不是只取一个页面,可能要取成千上万个,keepalive可以在取完一页之后立即取另一页。从ext/standard/http_fopen_wrapper.c的源码看,fopen不会keepalive,file_get_contents请求http时,使用的是http_fopen_wrapper,因此也不会keepalive。curl是可以设置keep-alive的。一般做搜索的大点的公司,爬虫不会用php写,不是C就是C++ 谢谢各位,其实我不是想写爬虫程序,只是突然想到这3个函数都能抓取远程数据,就想了解下PHP左右能抓取远程数据的函数之间的效率对比。如果能有方便点的测试方法更好,我本机配置不太好。。再多留一段时间,多讨论讨论,就针对PHP函数的效率而言,不是针对爬虫程序的开发和效率问题。 Curl好象是可以模拟浏览器的。所以,可能会打一个持续连接,每个连接有多个请求。如果是这样的话,curl 效率可能是最高的。要理解这个:即打一个持续连接,多次请求多个页面。(这只在服务器也支持的情况下有效)据说还有一种是通道连接,比keep alive 更快。所以,这几个函数,除了在连接上有差别外,其他的差别不大。一个请求和响应的时间都是差不多的。至于速度吗?自已测下吧 因此,如果fsocketopen能打通道的话,他是最快的。这个一个连接多次请求时才有意义。 个人认为 file_get_contents 这个最快. 内容已被编辑! mysql 高手进来帮忙解决一个问题,谢谢 麻烦大家帮忙看看 我数据库连接成功但却插入不了信息 php 的数组和对象有什么区别? PHP连接MSSQL的问题 时间问题啊.. 求PHP/MySQL 兼职开发者 请问怎样获得当前页面的文件名?如,正运行页面的文件名为:name.php 。 请教一个关于数据库的问题 请问header()函数的作用和使用方法 怎么跨域写cookie呢 找不到网页
其他的应该会更好,但我目的是想了解下在PHP环境中的方法、函数之类的to #5:
keep-alive在服务器中可以设置,这个没问题的。像现在有个汉景搜索的程序,就是PHP的,当然他主要是在中文分词上面的应用,但也需要抓取页面
你主要是取得一个页的源码keep alive 是打开一个持续连接,这个在浏览器中有意义,因为要加载很多连接,而我们这里只取源码不需要更多请求。
不知道这些函数在打开一个新页时是否还能仍用上个连接。至于搜索引擎。差别也不太,只不过搜索引擎请求时会智能判断,比如:无改变的就不请求实体。这些都是基于http协议理解。
keepalive可以在取完一页之后立即取另一页。
从ext/standard/http_fopen_wrapper.c的源码看,fopen不会keepalive,
file_get_contents请求http时,使用的是http_fopen_wrapper,因此也不会keepalive。
curl是可以设置keep-alive的。一般做搜索的大点的公司,爬虫不会用php写,不是C就是C++
Curl好象是可以模拟浏览器的。所以,可能会打一个持续连接,每个连接有多个请求。如果是这样的话,curl 效率可能是最高的。要理解这个:即打一个持续连接,多次请求多个页面。(这只在服务器也支持的情况下有效)据说还有一种是通道连接,比keep alive 更快。所以,这几个函数,除了在连接上有差别外,其他的差别不大。一个请求和响应的时间都是差不多的。至于速度吗?自已测下吧