header跳转和file_get_contents,哪种速度快些?
第一种写法:
header(url地址);
exit();
第二种写法:
echo @file_get_contents(url地址);
exit();
回复讨论(解决方案)
个人认为应该是header更快,看看我的思路:
header() 访问-输出
file_get_contents() 访问-返回数据-输出
这要看:
客户端到目标页
和
服务器到目标页 + 服务器到客户端
哪个快了
个人认为应该是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服务器访问了一次文件服务器,同样是两次访问,但是我想服务器的速度应该比客户端快吧,包括网速