博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
fopen,file_get_contents,curl的区别
阅读量:5039 次
发布时间:2019-06-12

本文共 1482 字,大约阅读时间需要 4 分钟。

1.       fopen /file_get_contents 每次请求都会重新做DNS查询,并不对DNS信息进行缓存。但是CURL会自动对DNS信息进行缓存。对同一域名下的网页或者图片的请求只需要一次DNS查询。这大大减少了DNS查询的次数。所以CURL的性能比fopen /file_get_contents 好很多。

2.       fopen /file_get_contents在请求HTTP时,使用的是http_fopen_wrapper,不会keeplive。而curl却可以。这样在多次请求多个链接时,curl效率会好一些。

3.       fopen / file_get_contents函数会受到php.ini文件中allow_url_open选项配置的影响。如果该配置关闭了,则该函数也就失效了。而curl不受该配置的影响。

4.       curl可以模拟多种请求,例如:POST数据,表单提交等,用户可以按照自己的需求来定制请求。而fopen / file_get_contents只能使用get方式获取数据。

因此,我还是比较倾向于使用curl来访问远程url。Php有curl模块扩展,功能很是强大。没事可以研究一下。

php中 curl, fsockopen ,file_get_contents 三个函数 都可以实现采集模拟发言 。 三者有什么区别,或者讲究么  

赵永斌:

有些时候用file_get_contents()调用外部文件,容易超时报错。换成curl后就可以.具体原因不清楚
curl 效率比file_get_contents()和fsockopen()高一些,原因是CURL会自动对DNS信息进行缓存(亮点啊 有我待亲测)

范佳鹏:

file_get_contents curl fsockopen
在当前所请求环境下选择性操作,没有一概而论:
具我们公司开发KBI应用来看:
刚开始采用:file_get_contents
后来采用:fsockopen
最后到至今采用:curl

(远程)我个人理解到的表述如下(不对请指出,不到位请补充)

file_get_contents 需要php.ini里开启allow_url_fopen,请求http时,使用的是http_fopen_wrapper,不会keeplive.curl是可以的。
file_get_contents()单个执行效率高,返回没有头的信息。
这个是读取一般文件的时候并没有什么问题,但是在读取远程问题的时候就会出现问题。
如果是要打一个持续连接,多次请求多个页面。那么file_get_contents和fopen就会出问题。
取得的内容也可能会不对。所以做一些类似采集工作的时候,肯定就有问题了。
sock较底层,配置麻烦,不易操作。 返回完整信息。
潘少宁-腾讯:
file_get_contents 虽然可以获得某URL的内容,但不能post  get啊。
curl 则可以post和get啊。还可以获得head信息
而socket则更底层。可以设置基于UDP或是TCP协议去交互
file_get_contents 和 curl 能干的,socket都能干。
socket能干的,curl 就不一定能干了
file_get_contents  更多的时候 只是去拉取数据。效率比较高  也比较简单。
赵的情况这个我也遇到过,我通过CURL设置host 就OK了。  这和网络环境有关系

转载于:https://www.cnblogs.com/zsmynl/p/3635335.html

你可能感兴趣的文章
爬虫综合大作业
查看>>
HTML canvas原生js实现鼠标画图
查看>>
《程序设计入门——C语言》翁恺老师 第一周编程练习记录
查看>>
IE8兼容性视图问题
查看>>
Kubernetes 运维学习笔记
查看>>
Centos6.9下RabbitMQ集群部署记录
查看>>
Python之基本的日期与时间转换 datetime、 dateutil模块
查看>>
android studio
查看>>
色彩大全,色彩配色大全
查看>>
mpeg文件格式分析 分类: 生活百科 201...
查看>>
并查集 经典 畅通工程
查看>>
Spark MLlib 之 Naive Bayes
查看>>
synchronized关键字
查看>>
自定义DataSourceProvider
查看>>
客户端向服务器提交数据,表单形式
查看>>
工具-VS2015前端开发工具简介
查看>>
php修改SESSION的有效生存时间
查看>>
spring security 11种过滤器介绍
查看>>
Hibernate一对多、多对一关联
查看>>
一、记录Git使用中遇到的问题及解决方法
查看>>