Maison  >  Article  >  développement back-end  >  header跳转和file_get_contents,哪种速度快些?

header跳转和file_get_contents,哪种速度快些?

WBOY
WBOYoriginal
2016-06-23 14:16:14942parcourir

header file_get_contents

不管是显示还是下载,就是比较它们的速度。我不会,请叫大家。

第一种写法:
header(url地址);
exit();

第二种写法:
echo @file_get_contents(url地址);
exit();

回复讨论(解决方案)

个人认为应该是header更快,看看我的思路:

header()  访问-输出
file_get_contents() 访问-返回数据-输出

本帖最后由 xuzuning 于 2013-02-19 17:23:37 编辑

这要看:
客户端到目标页

服务器到目标页 + 服务器到客户端

哪个快了

个人认为应该是header更快,看看我的思路:

header()  访问-输出
file_get_contents() 访问-返回数据-输出

header() 访问-跳转-输出显示
file_get_contents() 访问-返回时间-输出显示

组长让我测试一下,然后通过数据告诉他,但我迷茫啊......

引用 1 楼 kyzy_yy_pm 的回复:个人认为应该是header更快,看看我的思路:

header()  访问-输出
file_get_contents() 访问-返回数据-输出

header() 访问-跳转-输出显示
file_get_contents() 访问-返回时间-输出显示

组长让我测试一下,然后通过数据告诉他,但我迷茫啊......……

我个人认为,header() 访问- 跳转-输出显示中的跳转可以放到这里考虑吗?因为说的是跳转其实就是访问,我认为应该是这样

这要看:
客户端到目标页

客户端到服务器 + 服务器到目标页

哪个快了

我们的这样的,URL对应的文件在A服务器上,网站在B服务器上。

引用 1 楼 kyzy_yy_pm 的回复:个人认为应该是header更快,看看我的思路:

header()  访问-输出
file_get_contents() 访问-返回数据-输出

header() 访问-跳转-输出显示
file_get_contents() 访问-返回时间-输出显示

组长让我测试一下,然后通过数据告诉他,但我迷茫啊......……[


引用 3 楼 xiongmao000738 的回复:引用 1 楼 kyzy_yy_pm 的回复:个人认为应该是header更快,看看我的思路:

header()  访问-输出
file_get_contents() 访问-返回数据-输出

header() 访问-跳转-输出显示
file_get_contents() 访问-返回时间-输出显示

组长让我……
懂你的意思了,刚刚理解错误了。

在服务器上用file_get_contents获取目标页后发送给用户
相当于客户端使用代理访问目标页

至于谁快谁慢,需要实地测试

在服务器上用file_get_contents获取目标页后发送给用户
相当于客户端使用代理访问目标页

至于谁快谁慢,需要实地测试
具体应该怎么测啊?不会啊......

引用 7 楼 xuzuning 的回复:在服务器上用file_get_contents获取目标页后发送给用户
相当于客户端使用代理访问目标页

至于谁快谁慢,需要实地测试
具体应该怎么测啊?不会啊......
每种方式都循环100次看看所用时间哪个大,当然了两种测试要间隔一段时间在测试,不然会出现误差

引用 8 楼 xiongmao000738 的回复:引用 7 楼 xuzuning 的回复:在服务器上用file_get_contents获取目标页后发送给用户
相当于客户端使用代理访问目标页

至于谁快谁慢,需要实地测试
具体应该怎么测啊?不会啊......
每种方式都循环100次看看所用时间哪个大,当然了两种测试要间隔一段时间在测试,不然会出现误差
    ……
最好是重启机器或者清理内存,不然上次的测试所占用的内存影响下次测试的结果

外在因素太多,首先性质就是不一样一个站内一个站外,header访问考验两次客户端到服务器端的响应时间,file_get_contents 考验客户端到服务器 服务器到源文件服务器两个响应时间,这种东西没法具体判断,只能做分析

这个东西真没测试过,要看需求定吧。

最终是这么测试的。循环500访问同一个地址。ftpstorefile.php里面就是我写的文件下载方法。

$time1 =  time() ;
$url = 'http://192.168.84.72:9500/ftpstorefile.php?fileid=73574';
for($i=0; $i $img_file_str = file_get_contents($url);
$time2 =  time() ;

var_dump($time2 - $time1);
?>

最终得出来的结果是:header跳转需要20秒左右。file_get_contents大概8秒左右。

可能是因为文件服务器和网站服务器是局域网,所以file_get_contents的速度会快些。

你file_get_contents得到的结果没有输出,所以影响了结果的时间,你应该输出,因为不输出无法得到header类似的结果,这样是不公平的

header跳转 是在服务器端直接转向的吗 还是响应到客户端,客户端进行跳转的

根据我的理解header是 服务器响应客户端时候返回的HTTP报头,告诉客户端跳转到这个地址
也就是客户端访问了两次服务器端。
file_get_contents是服务器端读取文件内容返回,客户端只访问了一次服务器 

如果文件是在另一台服务器上的话,就是客户端访问了一次服务器,web服务器访问了一次文件服务器,同样是两次访问,但是我想服务器的速度应该比客户端快吧,包括网速

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn