找回密码
 注册
广告投放 虚位以待【阿里云】2核2G云新老同享 99元/年,续费同价做网站就用糖果主机-sugarhosts.comJtti.com-新加坡服务器,美国服务器,香港服务器
查看: 963|回复: 22

套套,Come in!

[复制链接]
发表于 2007 年 7 月 20 日 13:12:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
问你个问题,PHP里用什么函数打开远程文件比较快?
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
发表于 2007 年 7 月 20 日 13:49:17 | 显示全部楼层
【腾讯云】2核2G云服务器新老同享 99元/年,续费同价
come in
如果有次函数的话
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
回复

使用道具 举报

发表于 2007 年 7 月 20 日 14:00:15 | 显示全部楼层
效率没测试过
但现在都推荐用 file_get_contents 了
不过我还是用 fsockopen 多些
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
回复

使用道具 举报

发表于 2007 年 7 月 20 日 14:13:16 | 显示全部楼层
天真热
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
回复

使用道具 举报

发表于 2007 年 7 月 20 日 14:33:22 | 显示全部楼层
这种问题真有趣
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
回复

使用道具 举报

发表于 2007 年 7 月 20 日 14:37:25 | 显示全部楼层
测试代码

  1. <?php
  2. set_time_limit(0);

  3. function mtime() {
  4.     list($usec, $sec) = explode(' ', microtime());
  5.     return ((float)$usec + (float)$sec);
  6. }

  7. $time_begin = mtime();
  8. for ($i = 0; $i < 50; $i++) {
  9.     $data = '';
  10.     $data = file_get_contents('http://www.baidu.com');
  11. }
  12. $time_end = mtime();
  13. echo 'file_get_contents: ', $time_end - $time_begin, '<br />';

  14. $time_begin = mtime();
  15. for ($i = 0; $i < 50; $i++) {
  16.     $data = '';
  17.     $data = file('http://www.baidu.com');
  18. }
  19. $time_end = mtime();
  20. echo 'file: ', $time_end - $time_begin, '<br />';

  21. $time_begin = mtime();
  22. for ($i = 0; $i < 50; $i++) {
  23.     $data = '';
  24.     $fp = fsockopen('www.baidu.com', 80);
  25.     $out = "GET / HTTP/1.1\r\n";
  26.     $out .= "Host: [url]www.baidu.com[/url]\r\n";
  27.     $out .= "Connection: Close\r\n\r\n";
  28.     fwrite($fp, $out);
  29.     while (!feof($fp)) {
  30.         $data .= fgets($fp, 128);
  31.     }
  32.     fclose($fp);
  33. }
  34. $time_end = mtime();
  35. echo 'fsockopen: ', $time_end - $time_begin, '<br />';
复制代码


第一次
file_get_contents: 12.467694997787
file: 12.547880887985
fsockopen: 9.6251020431519

第二次
file_get_contents: 10.840023040771
file: 12.598785877228
fsockopen: 9.7779731750488

第三次
file_get_contents: 9.7077579498291
file: 9.5748469829559
fsockopen: 12.533878087997

第四次
file_get_contents: 10.059661149979
file: 9.4984700679779
fsockopen: 9.7483789920807

第五次
file_get_contents: 12.61283493042
file: 10.825304985046
fsockopen: 9.6883759498596
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
回复

使用道具 举报

发表于 2007 年 7 月 20 日 14:38:26 | 显示全部楼层
【腾讯云】2核2G云服务器新老同享 99元/年,续费同价
可见还是 fsockopen 最快
也最烦琐

效率相差不多
不如直接用 file_get_contents
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
回复

使用道具 举报

发表于 2007 年 7 月 20 日 14:43:44 | 显示全部楼层


其实socket最快,本来file_get_contents读远程文件就是用的socket, 只不过封装了,对外隐藏细节。fsockopen也是
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
回复

使用道具 举报

发表于 2007 年 7 月 20 日 14:45:59 | 显示全部楼层
 而且楼主估计是采集了,这时候网速决定一切,瓶颈不在php这块。fork出多几个进程可以提高速度.
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
回复

使用道具 举报

发表于 2007 年 7 月 20 日 14:48:11 | 显示全部楼层
。。Microsoft.XMLHTTP
客户端执行组件
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|金光论坛

GMT+8, 2025 年 2 月 6 日 07:10 , Processed in 0.033003 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表