我现在遇到一个问题,就是必须循环读取一个url(不同参数)文件,大概150次左右,然后依次返回文件的第一行内容。
部分代码如下:
while($row4 = $db->fetch_array($res4))
{
$order4[$i]=$row4;
$imageurl="http://127.0.0.1:8012/getimage.cgi?receiver=".$row4['Email']; $order4[$i]['image']=file_get_contents($imageurl);
$i++;
}
文件内容大概是一个图片的地址:“../images/127-3.bmp”。
getimage.cgi文件是没权限更改的。
上面是实现了,可是速度不是很快,自己测试了下主要影响速度的地方是file_get_contents,
问下各位要怎样优化才能提高速度呢。

解决方案 »

  1.   

    使用 file_get_contents 是读取整个,你可以使用 fgets 来读取一行就够了。还有,影响效率的还有网速度等
      

  2.   

    同意楼上的  还有可以参考下php各种引入文件函数的 速度测试http://www.cnblogs.com/cuixiping/archive/2008/05/06/1184796.html
      

  3.   


    谢谢了!有试过用fgets来取,可是速度改变不了多少,还是挺慢的。
      

  4.   

    <?php
    while($row4 = $db->fetch_array($res4))
    {
     $order4[$i]=$row4;
     $handle = fopen(http://127.0.0.1:8012/getimage.cgi?receiver=".$row4['Email'], "r");
     
     $order4[$i][ 'image']= = fgets($handle);
         
     fclose($handle);
     $i++;
    }
    ?> 
      

  5.   


    看了文章,fpassthru 和readfile的速度对照起来是快挺多的,可是我只想把内容读到变量去,而且不显示在页面上,不知怎么处理。
      

  6.   

    可以用缓冲实现
    ob_start();