php中file_get_content 和curl以及fopen 效率分析

yipeiwu_com6年前PHP代码库

三个函数虽然都是读取资源的函数,但各自的应用场景不同。

curl多用于互联网网页之间的抓取,fopen多用于读取文件,而file_get_contents多用于获取静态页面的内容。

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

相关文章

PHP中phar包的使用教程

前言 PHP5.3之后支持了类似Java的jar包,名为phar。用来将多个PHP文件打包为一个文件。 首先需要修改php.ini配置将phar的readonly关闭,默认是不能写pha...

使用php统计字符串中中英文字符的个数

复制代码 代码如下:<?phpecho $str = "43fdf测试fdsfadaf43543543职工问防盗锁防盗锁5345gfdgd";preg_match_all("/[0...

PHP 获取ip地址代码汇总

代码一: function getip() { static $ip = ''; $ip = $_SERVER['REMOTE_ADDR']; if(isset($_SE...

PHP中的日期处理方法集锦

本文包含以下内容:  1、 得到目前的日期和时间-我们有多少种方式?  2、 改变日期显示的方式-日期和时间的显示形式  3、 ...

php ob_flush,flush在ie中缓冲无效的解决方法

PHP程序的缓冲,而不论PHP执行在何种情况下(CGI ,web服务器等等)。该函数将当前为止程序的所有输出发送到用户的浏览器。 flush() 函数不会对服务器或客户端浏览器的缓存模式...