首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

fsockopen,fopen,file_get_contents 为啥fsockopen是最快的呢

2012-12-30 
fsockopen,fopen,file_get_contents为什么fsockopen是最快的呢query_time_class.inc.php?phpclass query_

fsockopen,fopen,file_get_contents 为什么fsockopen是最快的呢
query_time_class.inc.php

<?php
    class query_time_class{
        
        var $start_time;
        var $end_time;
        
        function query_start(){
            
            $this->start_time = 0;
            $this->end_time   = 0;
            $this->start_time = $this->get_cur_sec();
            
        }
        
        function query_end(){
            
            $this->end_time = $this->get_cur_sec();
            
        }
        
        function get_query_time(){
            
            $time = floatval($this->end_time - $this->start_time);
            $time = sprintf("%01.4f",$time);
            return $time;
            
        }
        
        function get_cur_sec(){
            
            list($msec,$sec) = explode(" ", microtime());
            $msec            = floatval($msec);
            $sec             = floatval($sec+$msec);
            return $sec;
            
        }
        function out_put(){
            
            $time   = $this->get_query_time();
            $output = "执行时间 {$time} 秒";
            echo $output;
            
        }
        
    } 


?>



执行代码


<?php

include('query_time_class.inc.php');
$query_time_obj = new query_time_class();

$query_time_obj->query_start();
for($ii=0; $ii<10; $ii++) {

fsockopen('www.poco.cn',80, $errno, $errmsg);     

}
$query_time_obj->query_end();
echo("fsockfopen:");
$query_time_obj->out_put();

echo("\n");


$query_time_obj->query_start();
for($ii=0; $ii<10; $ii++) {

    fopen('http://www.poco.cn',"r"); 

}
$query_time_obj->query_end();
echo("open:");
$query_time_obj->out_put();
echo("\n");

$query_time_obj->query_start();
for($ii=0; $ii<10; $ii++) {

file_get_contents('http://www.poco.cn');

}
$query_time_obj->query_end();
echo("file_get_contents:");
$query_time_obj->out_put();

?>




执行结果:

---------- run php ----------
fsockfopen:执行时间 0.2349 秒
open:执行时间 0.7909 秒
file_get_contents:执行时间 2.3349 秒

输出完成 (耗时 8 秒) - 正常终止

如题  求高手讲解,先谢谢啦 !
[解决办法]
本帖最后由 xuzuning 于 2012-12-21 10:57:40 编辑 fsockfopen 仅仅是打开连接,当然最快
fopen 本身是文件系统函数,当发现目标文件是 url 时就在内部调用 fsockfopen 多了一套手续所以排在第二
file_get_contents 不仅要检查是否本地文件,还有取回文件内容,又多了套手续,只能屈居第三了

把 file_get_contents 和前两个函数比较,是有失公允的

热点排行