- 开发无止境 -
Data: 2018-11-23 16:52:03Form: JournalClick: 8
这几天在做抓取.发现用PHP的file_get_contents函数来获取远程文件的过程中总是出现失败,并且效率很低下.所以就做了个测试的demo来测试下PHP中各种方法获取文件的速度.
程序里面使用了四种方法 分别是
1,使用输入输出缓冲和include包含远程文件拿到对应url的内容
这个需要开启PHP的allow_url_include选项
2,使用fopen来以只读的方式打开并读取远程文件.
3,使用file_get_contents函数来获取远程url文件.
4,使用PHP的curl拓展来获取远程文件.
具体里面是啥工作原理我不知道,不过通过测试我得到的结果是
第100次调用:get_file_by_curl:used_time ::::0.0732s
100次平均时间:0.084043
失败次数:0
第100次调用:get_file_by_file_get_contents:used_time ::::0.103s
100次平均时间:0.11445643564356
失败次数:0
第100次调用:get_file_by_fopen:used_time ::::0.0905s
100次平均时间:0.086212871287129
失败次数:0
第100次调用:get_file_by_include:used_time ::::0.1248s
100次平均时间:0.11332079207921
失败次数:0
这上面是通过100次请求博客园首页的文件得出的结果 数据不多,但是还是能看出来区别的 用file_get_contents和include+缓冲区这两种方法的速度明显要比curl和fopen两种方式慢
下面是测试代码
<?php /** *名称:远程获取文件测试 *作用:测试各种方法获取远程文件的速度 *作者:swordphp@126.com *创建时间:2013-08-29 *最后修改时间:2013-08-29 **/ ini_set ( "max_execution_time" , "0" ); set_time_limit(0); ini_set ( "error_reporting" , "E_ALL & ~E_NOTICE" ); ini_set ( "allow_url_include" ,1); class fileget_test{ public function __construct(){ } //通过CURL拓展获取文件内容 |